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

