使用df.groupby('Attrition').agg('mean')时遭遇NotImplementedError求助
解决
df.groupby('Attrition').agg('mean')触发NotImplementedError的方法 以下是针对你遇到问题的具体排查和解决步骤:
先排查数据类型冲突
报错核心是数据集中存在非数值型列(比如字符串、类别型列),agg('mean')默认会尝试对所有列计算均值,这类非数值列无法执行均值运算,进而触发错误。讲师的操作可能隐含过滤了数值列,或是使用的pandas版本会自动跳过非数值列。先运行以下代码查看所有列的数据类型:
print(df.dtypes)针对性解决方法
指定仅对数值列计算均值
在agg中添加numeric_only=True参数,明确只处理数值型列,这是最直接的修复方式:df.groupby('Attrition').agg('mean', numeric_only=True)或者先筛选出数值列再分组计算:
numeric_cols = df.select_dtypes(include=['int64', 'float64']) numeric_cols.groupby(df['Attrition']).mean()检查数据集版本差异
确认你下载的数据集和讲师使用的是否一致:比如某些列的类型是否被误修改(比如Attrition列被转为数值型,或是新增了非数值列)。可以重新导入原始数据集再测试。兼容pandas版本行为差异
不同pandas版本对agg('mean')的默认处理逻辑有变化:旧版本会自动跳过非数值列,而新版本(如pandas 2.0+)默认numeric_only=False,会尝试对所有列计算导致报错。上述添加numeric_only=True的方法可以兼容新老版本。
内容的提问来源于stack exchange,提问作者Blank IsMissing
相关产品推荐
相关产品推荐

