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

如何用Pandas读取含List格式多值列的CSV文件?

解决特殊格式CSV读取的ParserError问题

直接用pd.read_csv()报错的核心原因:CSV第二列的List(...)结构包含大量逗号,被pandas误判为列分隔符,导致每行实际字段数和预期不符。

方法1:逐行读取并保留数组为列表列

通过正则精准匹配每行的三个字段,避免误分割数组内的逗号:

import pandas as pd
import re

# 定义正则模式,捕获timestamp、数组内容、identifier三个部分
line_pattern = r'^(\d+),\s*List\((.*?)\),\s*(.*)$'

parsed_data = []
with open("myFilePath", 'r', encoding='utf-8') as file:
    # 跳过表头(如果文件第一行是表头,不需要则注释此行)
    next(file)
    for line in file:
        line = line.strip()
        if not line:
            continue
        match_result = re.match(line_pattern, line)
        if match_result:
            # 提取并转换各字段
            timestamp = int(match_result.group(1))
            # 分割数组元素并转为float(支持科学计数法格式)
            value_list = [float(val.strip()) for val in match_result.group(2).split(',')]
            identifier = match_result.group(3)
            parsed_data.append({
                'timestamp': timestamp,
                'identifier': identifier,
                'values': value_list
            })

# 转换为目标DataFrame
df = pd.DataFrame(parsed_data)

方法2:将数组展开为单独列

如果需要把数组中的每个值作为独立列展示,在方法1的基础上添加以下代码:

# 将values列展开为多列,自动命名为value_1、value_2...
expanded_values = pd.DataFrame(df['values'].tolist(), columns=[f'value_{idx+1}' for idx in range(len(df['values'][0]))])
# 合并原字段与展开后的列
final_df = pd.concat([df[['timestamp', 'identifier']], expanded_values], axis=1)

额外适配说明

  • 如果CSV没有表头,直接删除next(file)代码。
  • 如果identifier字段包含逗号(比如被引号包裹),可调整正则为^(\d+),\s*List\((.*?)\),\s*"(.*)"$来适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:03:26