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

Pandas中如何转置数据并设置列名?解决列名不符预期问题

解决Pandas转置后设置列名的问题

我来帮你搞定这个转置后列名的问题!首先咱们得理清转置操作中索引和列名的对应关系——Pandas默认转置时会把原数据的列名变成新的索引,原数据的索引变成新的列名,这就是你当前输出不符合预期的原因。

假设你的原始数据大概是这样的(常见场景):

import pandas as pd

# 示例原始数据
df = pd.DataFrame({
    "指标": ["销售额", "利润"],
    "2022": [100, 20],
    "2023": [150, 30]
})

如果直接用df.T转置,会得到列名为0、1,索引包含“指标”的结果,这显然不是你想要的。下面给你两种靠谱的解决方法:

方法一:先设置标识列为索引再转置(推荐)

这种方法一步到位,提前把用来做新列名的列设为索引,转置后直接得到预期结构:

# 将"指标"列设置为数据的索引
df.set_index("指标", inplace=True)
# 执行转置
transposed_df = df.T
# 此时列名已经是"销售额"和"利润",索引是年份
print(transposed_df)

输出结果就是你想要的:

指标  销售额  利润
2022  100   20
2023  150   30

方法二:转置后调整列名和索引

如果已经完成转置操作,也可以事后调整:

# 先执行转置
transposed_df = df.T
# 把转置后的第一行(原"指标"列的值)设为新列名
transposed_df.columns = transposed_df.iloc[0]
# 删除不需要的"指标"行
transposed_df = transposed_df.drop("指标")
# 可选:给索引命名(比如"年份")
transposed_df.index.name = "年份"

这样处理后也能得到符合预期的结果。核心思路就是让你想要的列名来源(比如原始数据中的“指标”列)成为转置后列名的依据,而不是默认的数字索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:52:30