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

如何将DataFrame的列名添加为数据的第一行?

问题描述

我有如下DataFrame,想把列名添加为第一行,尝试用concat方法拼接但没成功,该怎么操作才能得到预期输出?

原代码:

import pandas as pd
df=pd.DataFrame({"Sales QTY":[10,20,30,40],
                 "Sales Person":['Jack', 'Adam', 'Ken', 'Jack'],
                 "Product":["Apple", "Orange","Apple","Cherry"]
                 })
df=pd.concat([pd.DataFrame(df.columns),df])
df

预期输出对应的DataFrame:

df=pd.DataFrame({"Sales QTY":['Sales QTY', 10,20,30,40],
                 "Sales Person":["Sales Person", 'Jack', 'Adam', 'Ken', 'Jack'],
                 "Product":["Product", "Apple", "Orange","Apple","Cherry"]
                 })

问题原因

你之前的concat失败,是因为pd.DataFrame(df.columns)创建的是列名为默认[0,1,2]的单行DataFrame,和原DataFrame的列名["Sales QTY", "Sales Person", "Product"]不匹配,拼接后会出现大量NaN值,达不到预期效果。

解决方法

方法1:对齐列名后再拼接

先把列名构造成和原DataFrame列名完全一致的单行DataFrame,再执行拼接:

import pandas as pd
df=pd.DataFrame({"Sales QTY":[10,20,30,40],
                 "Sales Person":['Jack', 'Adam', 'Ken', 'Jack'],
                 "Product":["Apple", "Orange","Apple","Cherry"]
                 })
# 构造和原df列名匹配的单行表头DataFrame
header_df = pd.DataFrame([df.columns], columns=df.columns)
# 拼接并重置索引
df = pd.concat([header_df, df], ignore_index=True)
print(df)

方法2:通过索引插入行

直接在原DataFrame的开头位置插入列名行:

import pandas as pd
df=pd.DataFrame({"Sales QTY":[10,20,30,40],
                 "Sales Person":['Jack', 'Adam', 'Ken', 'Jack'],
                 "Product":["Apple", "Orange","Apple","Cherry"]
                 })
# 将原索引整体后移一位,腾出索引0的位置
df.index = df.index + 1
# 在索引0处插入列名作为行数据
df.loc[0] = df.columns
# 重新排序索引并重置
df = df.sort_index().reset_index(drop=True)
print(df)

两种方法都能得到你想要的结果,注意插入列名行后,原本数值类型的列会自动转为object类型(因为混入了字符串),如果后续需要数值运算,可能需要单独处理对应列的类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:51:35