解决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. 列名的拼写错误或大小写错误。
  2. 数据源的结构已经发生了变化,导致某些预期的列不再存在。
  3. 数据源中没有足够的数据来生成所有预期的列。

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]“问题

你可能感兴趣的:(pandas)