pandas DataFrame调用rename方法传入mapper函数转换列名未生效求助
问题原因及解决方案
- pandas版本兼容性问题:部分旧版本pandas对
mapper+axis组合参数的支持存在缺陷,优先使用columns参数指定列名映射规则,写法更明确且无版本兼容问题:# 方案1:用columns参数+inplace直接修改原对象 S.rename(columns=lambda x:x.upper(), inplace=True) # 方案2:不使用inplace,返回新对象赋值给原变量,兼容性更强 S = S.rename(columns=lambda x:x.upper()) - 代码执行顺序问题:如果在Jupyter等交互式环境中运行代码,需要确认构造DataFrame的代码、rename修改代码是按顺序执行的,不要重复运行构造DataFrame的代码覆盖修改结果。
- 列名类型问题:如果列名被意外转为非字符串类型,调用
upper()方法会静默失败,可先执行print(S.columns.dtype)确认列名是字符串类型(pandas中字符串列名显示为object类型)。
内容的提问来源于stack exchange,提问作者Mauro
相关产品推荐
相关产品推荐

