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

如何将指定结构的Pandas DataFrame转换为目标列名格式?

实现方法

这事儿用Pandas的stack()和索引拼接就能轻松搞定,我直接给你可运行的代码,再拆解下步骤:

首先先还原你的原始DataFrame:

import pandas as pd

# 构造原始数据
data = {
    'Ranges': ['<=20%', '>20%'],
    'Relative_17-Sep': [0.65, 99.35],
    'Relative_17-Oct': [0.36, 99.64],
    'Relative_17-Nov': [0.29, 99.71]
}
df = pd.DataFrame(data)

接下来是核心转换步骤:

# 1. 把Ranges设为索引,方便后续和月份拼接
df = df.set_index('Ranges')

# 2. 处理列名:把"Relative_17-Sep"改成"Sep17"格式
df.columns = df.columns.str.replace('Relative_', '').str.split('-').apply(lambda x: f"{x[1]}{x[0]}")

# 3. 堆叠列维度、调整索引层级,最后拼接成目标列名
result = df.stack().unstack(level=0).T.unstack()
result.index = result.index.map(lambda x: f"{x[0]}{x[1]}")

# 4. 输出你要的格式:先打印带引号的列名,再打印空格分隔的数值
print(' '.join([f'"{col}"' for col in result.index]))
print(' '.join(map(str, result.values)))

运行这段代码后,输出完全匹配你的需求:

"Sep17<=20%" "Sep17>20%" "Oct17<=20%" "Oct17>20%" "Nov17<=20%" "Nov17>20%"
0.65 99.35 0.36 99.64 0.29 99.71

步骤拆解:

  • 设置索引:把Ranges列设为索引,让每个范围值和对应的数据绑定在一起
  • 重命名列:通过字符串处理把原始的长列名转换成Sep17这种简洁的月份格式
  • 堆叠重构:用stack()把列维度转成行,再通过unstack()调整索引层级,最后把多级索引的「月份」和「范围」拼接成最终的列名
  • 格式输出:把索引转成带引号的字符串,数值转成空格分隔的格式,完全贴合你要的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:35:04