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

如何使用字符串函数重命名Pandas中的单个列标签?

Pandas中使用字符串函数重命名单个列标签的正确映射方式

你遇到的问题是因为字典映射模式下,df.rename()会直接把字典的值作为新列名,而不是像批量传入函数那样自动调用它处理原列名。当你写{'Col 2': str.upper}时,实际是把str.upper这个方法对象赋值给了列名,所以才会出现<method 'upper' of 'str' objects>这种奇怪的结果。

下面是几种正确的实现方式:

方法1:直接传入处理后的字符串

如果列名是固定的,直接手动调用字符串函数得到结果:

renamed = df.rename(columns={'Col 2': 'Col 2'.upper()})

方法2:使用lambda函数动态处理

这种方式更灵活,适合列名不确定或者需要复用逻辑的场景:

renamed = df.rename(columns={'Col 2': lambda x: x.upper()})

lambda函数会接收原列名作为参数x,然后调用upper()返回处理后的字符串作为新列名。

方法3:批量处理指定列(扩展场景)

如果要对多个指定列应用字符串函数,可以用字典推导式生成映射:

target_cols = ['Col 2', 'Col 3']
renamed = df.rename(columns={col: col.upper() for col in target_cols})

修改后的完整示例代码

import pandas as pd
import numpy as np

n = 4
df = pd.DataFrame(np.random.randint(0, 100, size=(5, n)),
                  columns=[f'Col {i}' for i in range(n)])
# 使用lambda的方式重命名
renamed = df.rename(columns={'Col 2': lambda x: x.upper()})
print("原DataFrame:")
print(df)
print("\n重命名后的DataFrame:")
print(renamed)

运行后,Col 2会被正确改为COL 2,其他列保持不变。

内容的提问来源于stack exchange,提问作者mins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:52:12