Python Pandas求和与去重计数问题:DataFrame调用aggregate报错
搞定你的DataFrame聚合报错问题
嘿,我瞅了下你的问题,核心bug其实是列名大小写不匹配!你给的DataFrame列名是ID和Value,但写代码的时候却用了'Id'和'value'——pandas对列名大小写可是认死理的,找不到对应的列自然就报错了(虽然报错信息显示没有aggregate方法,但大概率是列名错误引发的异常被误报,或者你可能用了超老版本的pandas?不过先解决最可能的问题)。
正确的代码实现
先确认列名,然后用正确的列名执行聚合:
import pandas as pd # 先构造你的DataFrame data = {'ID': [1, 1, 2, 3, 4], 'Value': [100, 300, 200, 300, 400]} df = pd.DataFrame(data) # 用正确列名做聚合 result = df.agg({'ID': lambda x: x.nunique(), 'Value': 'sum'}) print(result)
运行后会输出你想要的结果:
ID 4 Value 1300 dtype: int64
补充小技巧
- 如果你的pandas版本真的特别旧(低于0.20.0),
agg/aggregate可能有兼容性问题,直接升级就行:pip install --upgrade pandas - 也可以分开计算,更直观还不容易踩列名的坑:
unique_ids = df['ID'].nunique() total_val = df['Value'].sum() print(f"ID去重计数为{unique_ids},总价值为{total_val}")
这样就能完美解决你的问题啦!
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

