[英]Merge two dataframes using pandas
I have two dataframes我有两个数据框
df1:
Person Value
Jack 6
Jill 9
Sam 4
Tony 3
df2:
Home Away
Jill Sam
Tony Jack
I wish to make a 3rd dataframe which grabs the number in the Value column from df1 and matches them to the names in df2我希望制作第三个 dataframe ,它从 df1 获取 Value 列中的数字并将它们与 df2 中的名称匹配
Goal output:目标 output:
df3:
Home Away Value1 Value2
Jill Sam 9 4
Tony Jack 3 6
Is there a simple merge function I can perform on this?我可以对此执行简单的合并 function 吗?
Thanks谢谢
Use Series.map
for both columns:对两列使用
Series.map
:
s = df1.set_index('Person')['Value']
df2['Value1'] = df2['Home'].map(s)
df2['Value2'] = df2['Away'].map(s)
Or use DataFrame.assign
for new DataFrame
:或使用
DataFrame.assign
为新的DataFrame
:
s = df1.set_index('Person')['Value']
df3 = df2.assign(Value1 = df2['Home'].map(s),
Value2 = df2['Away'].map(s))
print (df3)
Home Away Value1 Value2
0 Jill Sam 9 4
1 Tony Jack 3 6
Solution with double DataFrame.merge
and rename
columns:双
DataFrame.merge
和rename
列的解决方案:
df3 = (df2.merge(df1.rename(columns={'Person':'Home','Value':'Value1'}), how='left')
.merge(df1.rename(columns={'Person':'Away','Value':'Value2'}), how='left'))
print (df3)
Home Away Value1 Value2
0 Jill Sam 9 4
1 Tony Jack 3 6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.