解决Pandas KeyError: “None of [Index([...])] are in the [columns]“问题
·
原因:两个列表交互时,部分数据行,存在a表,但并不存在b表中......
当我们尝试从DataFrame中选择一组列,但其中一些列并不在DataFrame中时,就会出现这个问题。例如,考虑以下代码:
df = df[['title', 'url', 'postTime', 'viewCount', 'collectCount', 'diggCount','commentCount']]
如果df中不存在上述列中的任何一个,我们就会收到以下错误消息:
KeyError: "None of [Index(['title', 'url', 'postTime', 'viewCount', 'collectCount', 'diggCount', 'commentCount'], dtype='object')] are in the [columns]"
这个错误的主要原因是我们尝试访问DataFrame中不存在的列。可能的原因有:
- 列名的拼写错误或大小写错误。
- 数据源的结构已经发生了变化,导致某些预期的列不再存在。
- 数据源中没有足够的数据来生成所有预期的列。
1. 检查列名
首先,确保你要选择的列名与df
中的列名完全匹配,包括大小写。你可以使用以下代码来查看df
的所有列名:
print(df.columns)
2. 选择存在的列
为了确保代码的健壮性,我们可以选择那些确实存在的列,而不是硬编码我们想要的列名。以下是如何做到这一点的方法:
cols_to_select = ['title', 'url', 'postTime', 'viewCount', 'collectCount', 'diggCount', 'commentCount']
existing_cols = [col for col in cols_to_select if col in df.columns]
df = df[existing_cols]
这样,即使某些列不存在,我们的代码也不会崩溃。
借鉴了大佬帖子的回答,感谢大佬解答,有兴趣的同学,可关注下列回答:
解决Pandas KeyError: “None of [Index([...])] are in the [columns]“问题
更多推荐
已为社区贡献1条内容
所有评论(0)