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

如何使用Python面向对象方法读取CSV文件并存储为多列DataFrame

问题核心原因

你现有代码的问题主要有3个:

  1. 没有提前定义正确的字段表头,错误将CSV第二行数据当作表头做字段映射
  2. __repr__方法仅返回了你自定义的date_xx字符串,导致打印实例看不到实际存储的字段值
  3. 没有正确调用实例属性,也没有实现DataFrame的转换逻辑

修正后可直接运行的代码

import csv
import pandas as pd

class CsvRecord:
    # 预定义和你需求匹配的5个表头字段
    HEADER = ["id", "date", "status", "number", "email"]
    def __init__(self, row):
        # 将每行数据和表头绑定,生成实例属性
        for field, value in zip(self.HEADER, row):
            setattr(self, field, value)
    
    # 自定义打印格式,方便直接查看实例内容
    def __repr__(self):
        return f"CsvRecord(id={self.id}, date={self.date}, status={self.status}, number={self.number}, email={self.email})"
    
    # 提供转字典方法,方便后续批量转DataFrame
    def to_dict(self):
        return {field: getattr(self, field) for field in self.HEADER}

# 读取CSV文件(with语法会自动关闭文件,避免资源泄漏)
with open("complete_list.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    # 逐行生成记录实例
    record_instances = [CsvRecord(row) for row in reader]

# 可以直接通过属性访问任意字段,比如取第一条记录的邮箱
print(record_instances[0].email)

# 转换为你需要的DataFrame格式
df = pd.DataFrame([record.to_dict() for record in record_instances])
print(df)

运行上述代码即可得到你要求格式的DataFrame,也可以自由访问任意行的任意字段值。


内容的提问来源于stack exchange,提问作者Jack Zaki Zakiul Fahmi Jailani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:18:03