提问人:Pranav167 提问时间:11/4/2023 更新时间:11/5/2023 访问量:54
尽管在使用 group by pandas 时存在列名,但仍出现 Key 错误
Getting Key error despite column name being present while using group by pandas
问:
我有一个数据帧 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]
答:
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 字段不再存在于数据帧中, 这就是你的代码失败的原因。
评论