尽管在使用 group by pandas 时存在列名,但仍出现 Key 错误

Getting Key error despite column name being present while using group by pandas

提问人:Pranav167 提问时间:11/4/2023 更新时间:11/5/2023 访问量:54

问:

我有一个数据帧 df & 我正在尝试对 df 中的邮件列进行分组,以查看与每封邮件关联的唯一 ID 的计数。我希望看到邮件,然后是人员姓名,然后是 ID,然后是与该邮件关联的唯一 ID 的计数。

以下是我的代码-

grouped=df.groupby('Mail')[['NAME','ID']].apply(list).reset_index()
grouped['COUNT']=grouped['ID'].apply(lambda x: len(set(x)))
grouped[grouped['COUNT']>1]

错误:


KeyError                                  Traceback (most recent call last)
File /databricks/python/lib/python3.9/site-packages/pandas/core/indexes/base.py:3621, in Index.get_loc(self, key, method, tolerance)
   3620 try:
-> 3621     return self._engine.get_loc(casted_key)
   3622 except KeyError as err:
File /databricks/python/lib/python3.9/site-packages/pandas/core/frame.py:3505, in

 DataFrame.__getitem__(self, key)
   3503 if self.columns.nlevels > 1:
   3504     return self._getitem_multilevel(key)
-> 3505 indexer = self.columns.get_loc(key)
   3506 if is_integer(indexer):
   3507     indexer = [indexer]

注意- 当我使用没有 ['NAME'] 的完全相同的代码时,它可以正常工作。

grouped=df.groupby('Mail')['ID'].apply(list).reset_index()
grouped['COUNT']=grouped['ID'].apply(lambda x: len(set(x)))
grouped[grouped['COUNT']>1]
Python Pandas DataFrame 数据科学

评论

1赞 Panda Kim 11/4/2023
stackoverflow.com/help/minimal-reproducible-example
0赞 Hericks 11/4/2023
请点击@PandaKim分享的链接并提供 MRE。
0赞 inquirer 11/4/2023
@Pranav167同一个“ID”中可以有不同的“NAME”?
0赞 Pranav167 11/7/2023
是的,同一 ID 中可能有不同的名称。

答:

0赞 Roberto Rubertelli 11/5/2023 #1

对不起,你问的对我来说没有多大意义。 如果更改此代码行:

grouped['COUNT']=grouped['ID'].apply(lambda x: len(set(x)))

跟:

grouped['COUNT']=grouped['mail'].apply(lambda x: len(set(x)))
print(grouped)

您的代码必须有效。 检查终端,您将看到 NAME 和 ID 字段不再存在于数据帧中, 这就是你的代码失败的原因。