Pandas如何实现DF行列转置、设置列名并重置索引
Pandas DataFrame自定义转置实现方案
目标效果
对DataFrame做结构转换,最终满足:
- 原有列转置为行
- 转置生成的行作为新表的行索引
- 原表中存储的字段名作为新表列标题,不保留在行内容中
参考示例: - 转置前DF示例:

- 直接转置的错误结果示例:

最简实现
一行代码即可完成符合要求的转换:
# df为原始DataFrame变量名 new_df = df.set_index(df.columns[0]).T
实现逻辑
set_index(df.columns[0]):将原表存储字段/指标名的第一列设置为行索引,提前将待作为新列名的内容放到转置后映射为列名的位置.T执行转置:转置后原行索引自动成为新表列名,原列名自动成为新表的行索引,完全匹配需求。
分步实现(适配自定义调整场景)
如果转换过程中需要做额外数据清洗、格式调整,可以拆分步骤执行:
# 1. 执行基础转置 new_df = df.T # 2. 将转置后第一行(原表存储字段名的行)设置为新表列名 new_df.columns = new_df.iloc[0] # 3. 移除已经被用作列名的第一行,仅保留有效数据 new_df = new_df.iloc[1:]
直接转置报错原因
直接调用df.T转置时,pandas默认会将原表的默认整数索引作为转置后的列名,不会自动识别存在第一行/第一列的业务字段名,因此会出现字段名混入行内容、列名显示为0/1/2默认序号的错误结果。
内容的提问来源于stack exchange,提问作者Bruhlickd
相关产品推荐
相关产品推荐

