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

如何修改Pandas MultiIndex列中Price层级的大小写?

如何修改Pandas MultiIndex中指定层级的列名大小写?

我有一个带MultiIndex列的Pandas DataFrame,列层级为Ticker和Price,其中Price层级的列名(close、open、low)都是小写。更换新API拉取数据后,需要把这一层级的列名改成首字母大写的格式(Close、Open、Low)来匹配旧数据格式,保证现有代码正常运行。我的数据集规模很大,无法手动修改列名。当前df.columns的输出如下:

MultiIndex([(   'A',       'close'),
            (   'A',        'open'),
            (   'A',         'low'),
            ( 'ZTS',         'low'),
            ( 'ZTS',       'close'),
            ( 'ZTS',        'open')],
           names=['Ticker', 'Price'], length=6)

解决方案

可以利用Pandas MultiIndex的set_levels和字符串方法str.title()批量修改指定层级的列名,这是矢量化操作,效率很高,适合大数据集:

方法1:通过层级名称定位修改

# 针对Price层级,将所有列名转为首字母大写
df.columns = df.columns.set_levels(
    df.columns.get_level_values('Price').str.title(),
    level='Price'
)

方法2:通过层级位置定位修改

如果知道Price是第2个层级(索引从0开始计数,对应位置1),也可以用位置定位:

df.columns = df.columns.set_levels(
    df.columns.get_level_values(1).str.title(),
    level=1
)

执行完上述代码后,再查看df.columns,就能看到Price层级的列名已经变成Close、Open、Low,且Ticker层级的内容完全不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:48:21