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

如何转置Pandas DataFrame并为转置后的新列命名?

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

问题场景

初始DataFrame为3列单行结构:

import pandas as pd

df = pd.DataFrame({'TotalInvoicedPrice': [123],
                   'TotalProductCost': [18],
                   'ShippingCost': [5]})

执行df = df.T转置后,得到3行1列的结构,但原索引是原DataFrame的列名,此时直接用df.columns["Metrics","Values"]会报错,因为列数不匹配,且未将索引转为普通列。

正确解决方案

方法一:转置后重置索引并重命名列

先将转置后的索引转为普通列,再指定列名:

# 转置DataFrame
df_transposed = df.T
# 重置索引,将原索引转为列
df_transposed = df_transposed.reset_index()
# 重命名列
df_transposed.columns = ['Metrics', 'Values']

# 输出结果
print(df_transposed)

输出结果:

Metrics  Values
0  TotalInvoicedPrice     123
1   TotalProductCost      18
2        ShippingCost       5

方法二:一行代码简化实现

用rename_axis给索引命名,再结合reset_index将索引转为列并指定列名:

df_transposed = df.T.rename_axis('Metrics').reset_index(name='Values')

此方法更简洁,效果和方法一完全一致。

错误原因说明

转置后的DataFrame仅包含1列,而你试图直接设置2个列名,导致列数不匹配触发报错;同时原索引(原DataFrame的列名)未转为普通列,无法直接作为"Metrics"列使用,必须先通过reset_index将索引转为列后再设置列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:30:54