私は2つのパンダデータフレーム(XとY)を持っており、3番目(Z)にブール値を設定しようとしています。 Xの軸とYの列/構成要素との間の相互関係。ネストされたループを介してこれを行うことしかできず、コードは私のおもちゃの例では機能するが、実際のデータセットに対しては遅すぎる。他のデータフレームの列ヘッダーメンバーシップに基づいて(日付別)pandasデータフレームのブール値を設定する
# define X, Y and Z
idx=pd.date_range('2016-1-31',periods=3,freq='M')
codes = list('ABCD')
X = np.random.randn(3,4)
X = pd.DataFrame(X,columns=codes,index=idx)
Y = [['A','A','B'],['C','B','C'],['','C','D']]
Y = pd.DataFrame(Y,columns=idx)
Z = pd.DataFrame(columns=X.columns, index=X.index)
この例では、XのインデックスがYの列と一致しています。実際の例では、Yの列はXのインデックスのサブセットです。
Zの軸はXと一致します。次のように私はZの列ヘッダは、ヘッダとYの欄にZ.私の作業のコードのインデックスと等しい場合はtrueとZの要素を移入するためにされたい:
for r in Y:
for c in Z:
Z.loc[r,c] = c in Y[r].values
をコードはかなりきれいで、短いですが、より大きなデータセットで実行するには時間がかかります。私は同じ方法をもっと速く達成するためのベクトル化された方法があることを期待しています。
すべてのヘルプは大
おかげでいただければ幸いです!
ありがとうございます。私はZがXと同じ軸を持つようにしたいという点で残っている問題が1つあります(Yの軸はサブセットです)。パネル内でXとZのデータフレームを作成すると、これはNaNによって設定された残りの要素と自動的に発生します。パネルを使用していない場合、上記の結果をXと同じ軸にどのように伸ばしますか?たとえば、Xに索引に2行が追加されている場合 – tmasters