Pandas调用groups()方法不返回分组名且报不可调用错误如何解决
错误解决方案
你遇到的报错是由于调用方式错误导致的:pandas的groupby返回对象的groups是属性,不是可调用的方法,不需要加后缀()执行。
正确用法示例
import pandas as pd data = {'Hemisphere' : ["Northern", "Northern", "Northern", "Southern", "Southern",], 'Country' : ['India', 'USA', 'Canada', 'Australia', 'New Zealand']} df = pd.DataFrame(data) a = df.groupby("Hemisphere") # 直接访问属性,不需要加括号 print(a.groups)
输出结果如下:
{'Northern': [0, 1, 2], 'Southern': [3, 4]}
问题排查流程
如果确认之前相同pandas版本可以用a.groups()正常返回结果,可以按以下步骤定位异常:
- 执行
type(a.groups)确认返回类型,原生pandas返回的是字典类型,你当前环境返回的PrettyDict是经过美化封装的类型,检查是否近期安装了输出美化类的第三方库修改了pandas默认行为 - 检查当前运行环境是否有自定义的pandas猴子补丁、工具类封装,覆盖了默认的
groups属性实现 - 临时验证方案:创建新的干净虚拟环境,只安装pandas 1.3.4版本运行测试代码,确认是否为当前环境的依赖冲突问题
内容的提问来源于stack exchange,提问作者Pradeep
相关产品推荐
相关产品推荐

