我正在尝试根据列' X'在Python中合并两个数据帧。
左侧数据框中的列X具有非唯一值,右侧数据框中的列X具有唯一值。如何将右侧数据框中的值合并到左侧数据框中?
我想将df2中的行合并到df1中以形成df3
df1 = pd.DataFrame({'A': ['NA','EU','LA','ME'],
'B': [50, 23,21,100],
'X': ['IW233', 'IW455', 'IW455', 'IW100']})
df2 = pd.DataFrame({'C': [50, 12, 12, 11, 10, 16],
'X': ['IW455', 'IW200', 'IW233', 'IW150', 'IW175', 'IW100'],
'D': ['Aug', 'Sep', 'Jan', 'Feb', 'Dec', 'Nov']})
DF3:1
答案 0 :(得分:3)
您可以将merge
与左连接一起使用,如果只有X
加入列on
参数可以省略:
df = pd.merge(df1, df2, how='left')
print (df)
A B X C D
0 NA 50 IW233 12 Jan
1 EU 23 IW455 50 Aug
2 LA 21 IW455 50 Aug
3 ME 100 IW100 16 Nov
如果有多个相同的列名称:
df = pd.merge(df1, df2, on='X', how='left')
print (df)
A B X C D
0 NA 50 IW233 12 Jan
1 EU 23 IW455 50 Aug
2 LA 21 IW455 50 Aug
3 ME 100 IW100 16 Nov
答案 1 :(得分:0)
您可以在此处使用join
运算符:
>>> df1.join(df2.set_index('X'),on='X')
A B X C D
0 NA 50 IW233 12 Jan
1 EU 23 IW455 50 Aug
2 LA 21 IW455 50 Aug
3 ME 100 IW100 16 Nov
所以我们首先将右边框的索引更改为X
(因为这些在右边框架上是唯一的,这不是问题)。然后我们在X
列上执行联接。