我有两个DataFrame,
DF1
Name Year
A 2008
A 2009
B 2008
B 2008
DF2
year value
2008 10
2009 15
如何在df1中添加一个名为value的新列,根据年份列查找df2中的值?
目标
Name Year Value
A 2008 10
A 2009 15
B 2008 10
B 2009 15
我的问题最终成为数据类型..
df = df.convert_objects(convert_numeric=True)
地图解决方案是最快的76,000行
答案 0 :(得分:3)
您可以使用地图
df1['value'] = df1['Year'].map(df2.set_index('year')['value'])
你得到了
Name Year value
0 A 2008 10
1 A 2009 15
2 B 2008 10
3 B 2008 10
答案 1 :(得分:2)
我在Year
列上使用pd.merge()。
df1 = df1.merge(df2, on='Year', how='left')
答案 2 :(得分:0)
您可以使用join
来实现此目标
df1.join(df2.set_index('year'), on='Year')
Name Year value
0 A 2008 10
1 A 2009 15
2 B 2008 10
3 B 2008 10