根据另一个数据框中两行对应的值,向数据框添加列。

3

我有两个数据框:

df1 = pd.DataFrame({'X1':[2,2,2,2,3,3,3,3,4,4,4,5,5,5,5], 
                'X2':[10,20,70,80,10,20,70,80,50,70,80,60,70,80,90], 
                'X3':[0,1,0,1,1,1,1,0,0,0,1,1,0,0,0]})


     X1  X2  X3
0    2  10   0
1    2  20   1
2    2  70   0
3    2  80   1
4    3  10   1
5    3  20   1
6    3  70   1
7    3  80   0
8    4  50   0
9    4  70   0
10   4  80   1
11   5  60   1
12   5  70   0
13   5  80   0
14   5  90   0

另一个是df2:
df2 = pd.DataFrame({'X1':[2,3,3,4,5,5,5], 
                'X2':[10,20,70,50,60,70,80]})

   X1  X2
0   2  10
1   3  20
2   3  70
3   4  50
4   5  60
5   5  70
6   5  80

我需要根据df1中每行的X1和X2值,找到对应的X3值。结果应该类似于以下内容:
    X1  X2  X3
0   2  10   0
1   3  20   1
2   3  70   1
3   4  50   0
4   5  60   1
5   5  70   0
6   5  80   0
2个回答

2
使用 pandas.DataFrame.merge 方法:
df3 = df2.merge(df1, on=["X1", "X2"])
print(df3)

输出:

   X1  X2  X3
0   2  10   0
1   3  20   1
2   3  70   1
3   4  50   0
4   5  60   1
5   5  70   0
6   5  80   0

谢谢Chris。如果df1有其他列,例如X4、X5等,我只需要df2的X1、X2和X3列怎么办? - Mary Pari

1
df2 = df2.join(df1.set_index(['X1', 'X2']), on=['X1', 'X2'])

# display(df2)
   X1  X2  X3
0   2  10   0
1   3  20   1
2   3  70   1
3   4  50   0
4   5  60   1
5   5  70   0
6   5  80   0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接