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

如何用Pandas将含多表头的CSV拆分为表头与数据两个DataFrame?

我来给你拆解下实现这个CSV拆分需求的方法,用Python的pandas库就能轻松搞定,结合你的示例一步一步来:

核心思路

我们需要分两步处理:先把所有表头行提取成单独的DataFrame,再读取剩余的数据行生成另一个DataFrame,同时处理缺失值的转换(比如示例里的-1转成NaN)。

1. 提取所有表头行到第二个DataFrame

假设你的CSV有2行表头(可以根据实际情况调整这个数字),我们先读取这几行,然后把第一行作为表头DataFrame的列名,剩下的行作为数据内容:

import pandas as pd

# 定义CSV的表头行数
header_row_count = 2

# 先读取前header_row_count行,不设置列名
raw_header = pd.read_csv('mh.csv', nrows=header_row_count, header=None)
# 把第一行作为列名,剩下的行作为表头数据
header_df = pd.DataFrame(raw_header[1:].values, columns=raw_header.iloc[0].tolist())

运行后header_df的结果就和你示例里的一致:

Name  Height  Age
0        Metres

2. 生成移除指定表头行的第一个DataFrame

接下来读取数据部分,需要跳过所有表头行,用第一行表头作为列名,同时把-1识别为缺失值(NaN):

# 读取数据:跳过前header_row_count行,用第一行做列名,将-1转为NaN
data_df = pd.read_csv('mh.csv', skiprows=header_row_count, header=0, na_values=-1)

得到的data_df就是你要的结果:

Name  Height   Age
0    A     NaN  25.0
1    B    95.0   NaN

额外说明

  • 如果你的表头行数不是固定的2行,只需要修改header_row_count的值即可;
  • 如果需要识别其他缺失值标识(比如空字符串),可以扩展na_values参数,比如na_values=['-1', ''];
  • 如果CSV有特殊分隔符或格式,可以在pd.read_csv里添加sep等参数适配。

内容的提问来源于stack exchange,提问作者Krzysztof Słowiński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:10:29