私は以下のためにPython Pandasを使用しています。私は3つのデータフレーム、df1
,df2
およびdf3
を持っています。それぞれの次元、インデックス、列ラベルは同じです。私はdf3
内の値に応じて、df1
またはdf2
から要素を取る第四のデータフレームを作成したいと思います:2つのデータフレームからデータを抽出して3つ目のデータを作成する
df1 = pd.DataFrame(np.random.randn(4, 2), index=list('0123'), columns=['A', 'B'])
df1
Out[67]:
A B
0 1.335314 1.888983
1 1.000579 -0.300271
2 -0.280658 0.448829
3 0.977791 0.804459
df2 = pd.DataFrame(np.random.randn(4, 2), index=list('0123'), columns=['A', 'B'])
df2
Out[68]:
A B
0 0.689721 0.871065
1 0.699274 -1.061822
2 0.634909 1.044284
3 0.166307 -0.699048
df3 = pd.DataFrame({'A': [1, 0, 0, 1], 'B': [1, 0, 1, 0]})
df3
Out[69]:
A B
0 1 1
1 0 0
2 0 1
3 1 0
新しいデータフレーム、df4
は、同じインデックスと列のラベルを持っており、場合df1
から要素を取りますdf3
の対応する値は1
です。 df3
の対応する値が0
の場合は、df2
から要素を取ります。
実際の列ラベルとインデックス値ではなく、一般的な参照(例:ix
または)を使用するソリューションが必要です。データセットには50列と400行があるからです。
あなたの方法は機能します。数式の2番目の部分に小さなタイプミスがありますが、sytaxがその仕事をしています。ありがとうpd.DataFrame( df1.as_matrix()* df3.as_matrix()+ df2.as_matrix()*(1 - df3.as_matrix())、 index = df1.index、 columns = df1.columns) – Vijay