我有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/

10-12 23:08