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

如何用pd.read_csv同时启用header、parse_dates并保留首行单位且不重复读取CSV?

解决方案

当然可以做到,不用重复读取整个CSV文件,只需要先单独读取第一行的单位信息,再正常读取数据并解析日期即可,具体实现如下:

步骤说明

  • 先通过普通文件操作读取CSV的第一行(单位行),仅加载一行数据,不会额外消耗资源
  • 再使用pd.read_csv读取完整数据,指定header=1用第二行作为表头,同时通过parse_dates参数解析日期列
  • 将单位信息与对应列名关联,可存储为字典或存入DataFrame的元数据中,方便后续调用

完整代码示例

import pandas as pd

# 生成测试CSV(与示例结构一致,添加index=False避免多余索引列)
data_dict = {
    "-": ["A", "2022-01-27 12:15:32.005", "2022-01-27 12:15:33.005", "2022-01-27 12:15:34.005"],
    "s": ["B", 3, 2, 1],
    "W": ["C", 2, 3, 1]
}
pd.DataFrame(data_dict).to_csv("test.csv", index=False)

# 读取第一行的单位信息
with open("test.csv", "r", encoding="utf-8") as f:
    unit_list = f.readline().strip().split(",")

# 读取数据并解析日期列
df = pd.read_csv("test.csv", header=1, parse_dates=["A"])

# 将单位与列名绑定,存入DataFrame元数据
unit_dict = dict(zip(df.columns, unit_list))
df.attrs["column_units"] = unit_dict

# 验证结果
print("处理后的数据:")
print(df)
print("\n各列对应的单位:")
print(df.attrs["column_units"])

补充说明

  • 如果你的实际CSV包含索引列,去掉生成CSV时的index=False参数即可,读取单位后依然可以通过zip(df.columns, unit_list)完成对应
  • 把单位存入df.attrs是pandas官方推荐的元数据存储方式,不会干扰数据本身的结构和操作,后续需要单位信息时直接调用df.attrs["column_units"]即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:05:26