当前位置:  开发笔记 > 编程语言 > 正文

Python pandas合并了keyerror

如何解决《Pythonpandas合并了keyerror》经验,为你挑选了1个好方法。

当我尝试合并两个数据帧时,一直得到一个keyerror.代码:

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.它始终是"KeyError:'video_id'"



1> Amy D..:

您要小心不要使用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')

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有