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

如何将DataFrame列名转为行并替换为新列名?

解决DataFrame列名转成行并替换新列名的问题

我来帮你搞定这个问题!你的需求是把原本被错误用作列名的行值转换为普通数据行,同时设置新的规范列名。下面是具体的实现步骤和代码:

1. 先看原始数据情况

首先运行你提供的原始代码:

import pandas as pd

# 原始字典数据
dict = {'Erick':["aparna", "pankaj", "sudhir", "Geeku"], 'MBA': ["MBA", "BCA", "M.Tech", "MBA"], '80':[90, 40, 80, 98]}
df = pd.DataFrame(dict)
print(df)

输出会是:

Erick    MBA   80
0  aparna    MBA   90
1  pankaj    BCA   40
2  sudhir  M.Tech  80
3  Geeku     MBA   98

这里Erick、MBA、80其实是第一行数据,却被当成了列名,我们需要把它们移到数据行里,再替换成新列名。

2. 实现转换的代码

直接用以下代码完成转换:

# 把原列名转换成一行数据
new_row = pd.Series(df.columns, index=df.columns)
# 将新行添加到DataFrame的最前面,同时重置索引
df = pd.concat([pd.DataFrame([new_row]), df], ignore_index=True)
# 设置新的列名
df.columns = ['Name', 'Degree', 'Score']

# 打印结果
print(df)

3. 查看最终结果

运行上面的代码后,输出就是你期望的格式:

Name  Degree  Score
0    Erick     MBA     80
1   aparna     MBA     90
2   pankaj     BCA     40
3   sudhir   M.Tech     80
4    Geeku     MBA     98

步骤解释

  • pd.Series(df.columns, index=df.columns):将原DataFrame的列名转换成一个和原列结构匹配的Series,作为我们要添加的新行数据。
  • pd.concat(...):把新创建的行拼接在原DataFrame的最前面,ignore_index=True参数会重置整个DataFrame的索引,避免出现索引重复的问题。
  • df.columns = [...]:给DataFrame设置新的规范列名,完成最终的格式调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:40:57