如何修改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
相关产品推荐
相关产品推荐

