当我尝试合并两个数据框时,一直出现键盘错误。代码:
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/