Python pandas 合并 keyerror

标签 python python-2.7 pandas merge

当我尝试合并两个数据框时,一直出现键盘错误。代码:

c = pd.merge(a, b, on='video_id', how='left')

根据互联网研究,我仔细检查了 dtype 并将两者强制转换为 int:

a = pd.read_csv(filename, index_col=False, dtype={'video_id': np.int64}, low_memory=False)
b = pd.read_csv(videoinfo, index_col=False, dtype={'video_id': np.int64})

重命名列(以确保它们匹配):

a.columns.values[2] = "video_id"
b.columns.values[0] = "video_id"

强制执行 df:

c = pd.merge(pd.DataFrame(a), pd.DataFrame(b), on='video_id', how='left')

不知道为什么我仍然遇到键盘错误。而且总是“KeyError: 'video_id'”

最佳答案

您要注意不要使用 df.columns.values 重命名列。这样做会破坏列名称上的索引。

如果您知道要替换哪些列名,您可以尝试这样的操作:

a.rename(columns={'old_col_name':'video_id'}, inplace = True)
b.rename(columns={'old_col_name':'video_id'}, inplace = True)

如果您事先不知道列名,您可以尝试:

col_names_a = a.columns
col_names_a[index] = 'video_id'
a.columns = col_names_a

请记住,您实际上不需要在两个数据框中使用相同的列名。 Pandas 允许您在每个数据框中指定单独的名称

pd.merge(a, b, left_on = 'a_col', right_on = 'b_col', how = 'left')

关于Python pandas 合并 keyerror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34227038/

相关文章:

python-2.7 - Python。属性错误 : 'NoneType' object has no attribute 'startswith'

python - 自动更新Python类属性的最佳方法

嵌套函数中的python变量范围

python - 成功点击小部件后 Bokeh 重置图形

python - python 中的排列,有一个转折

python - 移动到文本小部件 tkinter 中的特定位置

Python - 正则表达式,多重匹配

python - 在 python Blender (bpy) 中列出每个面的顶点

python - Pandas 数据框重新定向

Pandas 创建一个包含正确顺序列的 DataFrame