我有2个dataframe(data1和data2)。
data2是国家/地区列表。
data1是公司列表。
在data2中,我故意复制了一个国家/地区
我想在data1中添加新列(国家/地区名)。
我可以使用groupby,drop_duplicate和merge做到这一点。但是此代码太长。
是否有一种简单的方法来解决此联接并从不同的数据框中检索值
示例代码:
data1 = {
'Code': [1, 2, 3],
'Name': ['Company1', 'Company2', 'Company3'],
'CountryCode': [61,62,64],
}
df1 = pd.DataFrame(data1, columns= ['Code','Name','CountryCode'])
data2 = {
'CountryCode': ['61','62','64','62'],
'Country': ['Australia','Indonesia','NewZealand','Indonesia'],
}
df2 = pd.DataFrame(data2, columns= ['CountryCode','Country'])
print(df1)
Code Name CountryCode
0 1 Company1 61
1 2 Company2 62
2 3 Company3 64
print(df2)
CountryCode Country
0 61 Australia
1 62 Indonesia
2 64 NewZealand
3 62 Indonesia
What I want the output is for df1
Code Name CountryCode Country
0 1 Company1 61 Australia
1 2 Company2 62 Indonesia
2 3 Company3 64 NewZealand
最佳答案
country_dict = dict(zip(df2['CountryCode'], df2['Country']))
df1['Country'] = df1['CountryCode'].map(country_dict)
注意:在您提供的输入中,列
CountryCode
在df1中为整数,而在df2中为object。如果确实如此,请使用下面的代码。如果展位数据框中的数据类型相同,则可以使用上面的代码。
df1['Country'] = df1['CountryCode'].astype(str).map(country_dict)
输出量
Code Name CountryCode Country
0 1 Company1 61 Australia
1 2 Company2 62 Indonesia
2 3 Company3 64 NewZealand
关于python - Python:搜索并加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60180782/