複数の列に条件付きデータフレームをマージdf1
):パンダ - 私は2つのデータフレームを持っていると私は((他の)列</p> <p>まずデータフレームを1から列のいずれかを実行し、複数の値に基づいて、第2に新しい列を作成したい
df1 = pd.DataFrame({'cond': np.repeat([1,2], 5),
'point': np.tile(np.arange(1,6), 2),
'value1': np.random.rand(10),
'unused1': np.random.rand(10)})
cond point unused1 value1
0 1 1 0.923699 0.103046
1 1 2 0.046528 0.188408
2 1 3 0.677052 0.481349
3 1 4 0.464000 0.807454
4 1 5 0.180575 0.962032
5 2 1 0.941624 0.437961
6 2 2 0.489738 0.026166
7 2 3 0.739453 0.109630
8 2 4 0.338997 0.415101
9 2 5 0.310235 0.660748
及び第二(df2
):
df2 = pd.DataFrame({'cond': np.repeat([1,2], 10),
'point': np.tile(np.arange(1,6), 4),
'value2': np.random.rand(20)})
cond point value2
0 1 1 0.990252
1 1 2 0.534813
2 1 3 0.407325
3 1 4 0.969288
4 1 5 0.085832
5 1 1 0.922026
6 1 2 0.567615
7 1 3 0.174402
8 1 4 0.469556
9 1 5 0.511182
10 2 1 0.219902
11 2 2 0.761498
12 2 3 0.406981
13 2 4 0.551322
14 2 5 0.727761
15 2 1 0.075048
16 2 2 0.159903
17 2 3 0.726013
18 2 4 0.848213
19 2 5 0.284404
df1['value1']
はEACの値が含まれhの組合せである。cond
とpoint
。
私はdf1['value1']
からの値を含むdf2
で新しい列(new_column
)を作成したいのですが、値がcond
とpoint
は2つのデータフレーム間で一致しているものでなければなりません。
だから私の所望の出力は次のようになります。この例では
cond point value2 new_column
0 1 1 0.990252 0.103046
1 1 2 0.534813 0.188408
2 1 3 0.407325 0.481349
3 1 4 0.969288 0.807454
4 1 5 0.085832 0.962032
5 1 1 0.922026 0.103046
6 1 2 0.567615 0.188408
7 1 3 0.174402 0.481349
8 1 4 0.469556 0.807454
9 1 5 0.511182 0.962032
10 2 1 0.219902 0.437961
11 2 2 0.761498 0.026166
12 2 3 0.406981 0.109630
13 2 4 0.551322 0.415101
14 2 5 0.727761 0.660748
15 2 1 0.075048 0.437961
16 2 2 0.159903 0.026166
17 2 3 0.726013 0.109630
18 2 4 0.848213 0.415101
19 2 5 0.284404 0.660748
私はちょうどタイル/リピートを使用することができますが、実際df1['value1']
に他のデータフレームにそうきちんと収まりません。 :だから私はちょうど私がdf1
から任意の未使用の列の上に持って帰りたいと思ういけない)私はそれらをマージしようとしましたが、1)の数字が一致し、2ように見えるいけないcond
とpoint
列
の一致に基づいて、それを実行する必要があります
df1.merge(df2, left_on=['cond', 'point'], right_on=['cond', 'point'])
いただきました2つのデータフレームを反復処理することなく、この新しい列を追加するための正しい方法?
おかげで@jezrael。あなたも。 – piRSquared