如何在df1中添加一个名为value的新列,根据年份列查找df2中的值?

时间:2017-03-30 19:16:06

标签: python pandas

我有两个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行

3 个答案:

答案 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