困っていること
元のデータフレームと新規のデータフレームを比較して、条件に合致する行番号,列番号(列名)を抽出したいと考えています。
ただし、現在私が作成したスクリプトは非常に動作が遅いため、高速化したいのですが、どなたかfor文を極力使わずに高速化できるアドバイスをいただけないでしょうか?
どなたか分かる方、ご教示お願いします。
やりたいこと
新規データフレーム(df_new)の全て行を元データフレーム(df_old)の各列上限下限と比較し、各列のいずれかが上限下限を超えた場合に、行番号(インデックス)と列番号(列名)を表示させるようにしたい、というものです。
x_old=np.array([[0.05,0.03,0.60], [0.94,0.84,0.06], [0.78,0.31,0.60], [0.46,0.90,0.82]]) x_new=np.array([[0.715194,0.911633,0.919818], [0.007843,0.280836,0.116867], [0.785161,0.788028,0.876988], [0.082946,0.490916,0.333131]]) df_old=pd.DataFrame(x_old,columns=["A","B","C"]) df_new=pd.DataFrame(x_new,columns=["A","B","C"]) for i in range(len(df_new)): error=[] for c in df_new.columns: if df_old.describe().loc[["min"],c].values[0]<=df_new.loc[i,c] \ and df_new.loc[i,c]<=df_old.describe().loc[["max"],c].values[0]: pass else: error.append(c) if len(error)>0: print(i,error) ------------------------------ 以下、print文で表示される内容 0 ['B', 'C'] 1 ['A'] 2 ['C']
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/01 04:25