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

