首页 > 解决方案 > Python - 合并两个数据框问题

问题描述

我正在尝试使用 pandas 合并函数在 python 中合并两个数据集,但我遇到了一些我无法解决的奇怪错误。你能看看,让我知道我在这里做错了什么吗?

这是第一个数据集的列列表和数据类型:FIFA DATA SET

Nationality        object
Name               object
Age                 int64
Overall             int64
Potential           int64
Club               object
Value              object
Wage               object
Preferred Foot     object
Weak Foot         float64
Skill Moves       float64
Position           object
Jersey Number     float64
Joined             object
Weight             object
dtype: object

这是第二个数据集:GDP 数据集:

Nationaility     object
Population       float64
GDP              float64
dtype: object

这是我使用的代码:

 master_df = pd.merge(fifa_subset, gdp_subset, on = "Nationaility", how = 
 "right", suffixes=('_',''))

我收到了这个错误:

 C:\Anaconda3\lib\site-packages\pandas\core\reshape\merge.py in 
 __init__(self, left, right, how, on, left_on, right_on, axis, left_index, 
 right_index, sort, suffixes, copy, indicator, validate)
 549         (self.left_join_keys,
 550          self.right_join_keys,
 -->  551          self.join_names) = self._get_merge_keys()
 552 
 553         # validate the merge keys dtypes. We may need to coerce

 C:\Anaconda3\lib\site-packages\pandas\core\reshape\merge.py in 
 _get_merge_keys(self)
 855                             right_keys.append(
 856                                 right._get_label_or_level_values(
 -->  857                                     rk, stacklevel=stacklevel))
 858                         else:
 859                             # work-around for 
 merge_asof(right_index=True)

 C:\Anaconda3\lib\site-packages\pandas\core\generic.py in 
 _get_label_or_level_values(self, key, axis, stacklevel)
 1380             values = self.axes[axis].get_level_values(key)._values
 1381         else:
 ->   1382             raise KeyError(key)
 1383 
 1384         # Check for duplicates

 KeyError: 'Nationaility'

标签: pythonpandas

解决方案


正如@ALollz 上面评论的那样,如果您决定保持列名不变,这里是完整的代码。

master_df = pd.merge(fifa_subset, gdp_subset, left_on = "Nationality", right_on = "Nationaility", how = "right", suffixes=('_',''))

推荐阅读