You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame重命名列失败且赋值后返回NoneType问题求助

Pandas DataFrame重命名列失败且赋值后返回NoneType问题求助

嗨,我看到你在给Pandas DataFrame重命名列的时候遇到了两个头疼的问题,这就帮你拆解下原因和对应的解决办法~

问题1:rename()方法没生效的原因

你第一次调用general.rename({'Species': 'Common Name'}, inplace=True)时,默认情况下rename()是针对行索引做修改的,根本没去碰列名!所以必须明确告诉Pandas你要修改的是列,有两种简单的方式:

  • 直接指定columns参数(最推荐,可读性最强):
    general.rename(columns={'Species': 'Common Name'}, inplace=True)
    
  • 或者指定axis=1(代表操作的是列轴):
    general.rename({'Species': 'Common Name'}, axis=1, inplace=True)
    

问题2:赋值后返回NoneType的原因

当你使用inplace=True参数时,rename()会直接在原DataFrame上完成修改,并且返回None。这时候你如果把它赋值给general,就相当于把None塞进了这个变量里,后续自然会报错TypeError: 'NoneType' object is not subscriptable。

解决这个问题也有两种思路:

  1. 用inplace=True时,不要给原变量赋值:
    general = pd.read_csv('july_4/general.csv', usecols=['Species', 'Count'])
    # 直接修改原DataFrame,不用赋值
    general.rename(columns={'Species': 'Common Name'}, inplace=True)
    # 直接用general就行,列名已经改好了
    print(general)
    
  2. 不用inplace=True,把返回的新DataFrame赋值给变量:
    general = pd.read_csv('july_4/general.csv', usecols=['Species', 'Count'])
    # 接收rename返回的新DataFrame
    general = general.rename(columns={'Species': 'Common Name'})
    print(general)
    

按照上面的方法修改后,你的DataFrame列名应该就能顺利从Species改成Common Name啦~

备注:内容来源于stack exchange,提问作者digitalwaterfall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:14:35