Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:搜索并加入_Python_Pandas - Fatal编程技术网

Python:搜索并加入

Python:搜索并加入,python,pandas,Python,Pandas,我有两个数据帧(data1和data2)。 数据2是国家列表。 数据1是公司列表。 在数据2中,我故意复制了一个国家 我想在data1中添加新列(country name)。 我可以用groupby、drop_duplicate和merge来完成。但是这个代码太长了。 有没有简单的方法来解决这个连接并从不同的数据帧中检索值 示例代码: data1 = { 'Code': [1, 2, 3], 'Name': ['Company1', 'Company2', '

我有两个数据帧(data1和data2)。 数据2是国家列表。 数据1是公司列表。 在数据2中,我故意复制了一个国家 我想在data1中添加新列(country name)。 我可以用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
注意:在您提供的输入中,
CountryCode
列在df1中是整数,但在df2中是object。如果数据确实如此,请使用下面的代码。 如果booth数据框中的数据类型相同,则可以使用上面的代码

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
注意:在您提供的输入中,
CountryCode
列在df1中是整数,但在df2中是object。如果数据确实如此,请使用下面的代码。 如果booth数据框中的数据类型相同,则可以使用上面的代码

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

谢谢你的回复。我运行你的代码,数据1中的国家是Nan。输出:代码名称CountryCode Country 0 1公司1 61南1 2公司2 62南2 3公司3 64南请检查完整代码,我现在已经包括一个注释。非常棒的解决方案。非常感谢你,莫伊斯。我正在努力学习python。如果键是不同的标题怎么办。在df1中,称为country_代码,df2称为CountryCode,这不重要
country\u dict
没有列名。打印
country\u dict
&查看输出,您会有一个想法。只需确保在为回复moys创建dictionary.thk时使用正确的名称。我运行你的代码,数据1中的国家是Nan。输出:代码名称CountryCode Country 0 1公司1 61南1 2公司2 62南2 3公司3 64南请检查完整代码,我现在已经包括一个注释。非常棒的解决方案。非常感谢你,莫伊斯。我正在努力学习python。如果键是不同的标题怎么办。在df1中,称为country_代码,df2称为CountryCode,这不重要
country\u dict
没有列名。打印
country\u dict
&查看输出,您会有一个想法。只需确保在创建字典时使用正确的名称即可。