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

如何合并DataFrame列表:仅保留首个表头移除其余表头

问题解答

合并后是否会出现多个表头?

会的。原因是你调用pd.read_csv()时指定了header=None,这会让pandas把CSV文件的第一行(原本是表头)当作普通数据行加载到DataFrame里。每个CSV的表头都被当成数据行存入列表中的DataFrame,合并后自然就会出现多组重复的“表头行”。

如何仅保留首个表头并移除其余?

有两种处理方式,推荐从读取阶段修正,更高效:

方式一:读取时正确识别表头(推荐)

直接去掉pd.read_csv()里的header=None参数(pandas默认会把CSV第一行作为表头,等价于header=0),这样读取后的每个DataFrame都会用原CSV的表头作为列名,数据行从第二行开始,合并后就不会有重复表头了:

path = "..."
all_files = glob.glob(path + "*.csv")
li = []
for filename in all_files:
    # 不再指定header=None,自动识别第一行为表头
    df = pd.read_csv(filename, index_col=None)
    li.append(df)
# 合并所有DataFrame并重置索引
combined_df = pd.concat(li, ignore_index=True)

方式二:已读取完列表后再处理

如果已经按原代码读取了DataFrame列表,可以在合并后清理重复的表头行:

# 先合并所有DataFrame
combined_df = pd.concat(li, ignore_index=True)

# 提取第一个表头行的内容
header_content = combined_df.iloc[0]

# 将这行内容设为合并后DataFrame的列名
combined_df.columns = header_content

# 过滤掉所有和表头内容完全一致的行,重置索引
combined_df = combined_df[~combined_df.apply(lambda row: row.equals(header_content), axis=1)].reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:01:18