reset_index()函数name参数异常:相同代码执行结果不同
解决
reset_index() got an unexpected keyword argument 'name'错误 问题原因
这是Pandas版本差异引发的问题:
- 较新版本的Pandas(v0.24及以后)中,
Series.reset_index()支持通过name参数直接重命名聚合后的列; - 旧版本Pandas里该方法没有
name参数,因此会触发TypeError。
解决方案
方案1:升级Pandas版本
将Pandas升级到支持name参数的版本,即可直接保留原代码写法运行:
df = df.loc[df['ColumnA'] == 1].groupby(['ColumnB'])['ColumnC'].mean().reset_index(name='Avg_ColumnC')
方案2:适配旧版本的替代写法
如果无法升级版本,可改用以下两种写法实现相同效果:
- 写法一:先重置索引再重命名列
df = df.loc[df['ColumnA'] == 1].groupby(['ColumnB'])['ColumnC'].mean().reset_index().rename(columns={'ColumnC': 'Avg_ColumnC'})
- 写法二:聚合时直接指定列名(推荐)
df = df.loc[df['ColumnA'] == 1].groupby(['ColumnB']).agg(Avg_ColumnC=('ColumnC', 'mean')).reset_index()
内容的提问来源于stack exchange,提问作者Graleon3
相关产品推荐
相关产品推荐

