【发布时间】:2021-05-17 07:10:53
【问题描述】:
在使用 Pandas 处理和操作数据帧方面,我目前面临一个似乎无法解决的问题。
让您了解我正在谈论的数据帧以及您将在我的代码中看到的数据:
我正在尝试将数据集“data”的“exercise”列中的单词更改为“exercise”数据集的“name”列中的单词。
例如,“data”数据集的“运动”列中的首字母缩写词“Dl”应更改为“运动”数据集的“名称”列中的“Dead lifts”。
我尝试了很多方法,但似乎都失败了。我每次都收到相同的错误。
这是我尝试过的方法的代码:
### Method 1 ###
# Rename Name Column in 'exercise'
exercise = exercise.rename(columns={'label': 'exercise'})
# Merge Exercise Columns in 'exercise' and in 'data'
data = pd.merge(data, exercise, how = 'left', on='exercise')
### Method 2 ###
data.merge(exercise, left_on='exercise', right_on='label')
### Method 3 ###
data['exercise'] = data['exercise'].astype('category')
EXERCISELIST = exercise['name'].copy().to_list()
data['exercise'].cat.rename_categories(new_categories = EXERCISELIST, inplace = True)
### Same Error, New dataset ###
# Rename Name Column in 'area'
area = area.rename(columns={'description': 'area'})
# Merge Exercise Columns in 'exercise' and in 'data'
data = pd.merge(data, area, how = 'left', on = 'area')
这是我得到的错误:
Traceback(最近一次调用最后一次):
文件“---”,第 232 行,在
data.to_frame().merge(exercise, left_on='exercise', right_on='label')文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/frame.py”,第 8192 行,合并中
返回合并(文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/reshape/merge.py”,第 74 行,合并
op = _MergeOperation(文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/reshape/merge.py”,第 668 行,在 init
) = self._get_merge_keys()文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/reshape/merge.py”,第 1046 行,在 _get_merge_keys
left_keys.append(left._get_label_or_level_values(lk))文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/generic.py”,第 1683 行,在 _get_label_or_level_values
引发 KeyError(key)KeyError: '锻炼'
有人可以帮我解决这个问题吗?非常感谢您。
【问题讨论】:
-
叫我疯了,但是在回溯中导致错误的代码行似乎不在您提交的代码示例中。
-
另外,我看到您使用的是 Python 3.9。我会仔细检查 pandas 是否支持 3.9。
-
在数据
dataframe上,运行此命令,然后复制粘贴结果:print(data.columns) -
这只是三个数据帧之间的
merge()。经典加入
标签: python python-3.x pandas dataframe merge