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

如何将pandas DataFrame中CSV格式的Series列解析为新DataFrame?

解析DataFrame中字符串列的最优方法

场景说明

我有一个从CSV导入的DataFrame:

import pandas as pd

df = pd.DataFrame(
    {
        "date": ["2022-08-01T12:21:05", "2022-08-01T12:21:12", "2022-08-01T12:21:05"],
        "content": [
            "1659356463,1.245050,0.000000",
            "1659356479,1.245050,0.000000",
            "1659356494,1.245050,0.000000",
        ],
    }
)

需要把df['content']列解析成如下结构的DataFrame,方便后续导出为新CSV:

final_df = pd.DataFrame(
   {
       "timestamp": ["1659356463", "1659356479", "1659356494"],
       "tilt": ["1.245050", "1.246782", "1.230922"],
       "threshold": ["0.000000", "0.000000", "1.000000"],
   }
)

最优解决方案

以下是几种高效的处理方法,可根据数据规模和需求选择:

1. 简洁首选:str.split直接拆分

适合小规模数据,代码简洁易读:

# 拆分content列,expand=True将拆分结果转为多列DataFrame
content_df = df['content'].str.split(',', expand=True)
# 给拆分后的列指定名称
content_df.columns = ['timestamp', 'tilt', 'threshold']
# 若需要保留原date列,直接合并即可
final_df = pd.concat([df['date'], content_df], axis=1)

2. 性能最优:pd.read_csv配合io.StringIO

处理大规模数据时优先用这个,复用pandas优化后的CSV解析引擎:

import io

# 将所有content行拼接成标准CSV格式的字符串
csv_content = '\n'.join(df['content'].tolist())
# 用StringIO模拟文件对象,读取为DataFrame
content_df = pd.read_csv(io.StringIO(csv_content), header=None, names=['timestamp', 'tilt', 'threshold'])
# 合并原date列(可选)
final_df = pd.concat([df['date'], content_df], axis=1)

3. 灵活可控:csv.reader逐行解析

如果需要在解析时添加自定义逻辑(比如数据校验、转换),用这个更灵活:

import csv
from io import StringIO

parsed_rows = []
for line in df['content']:
    # 用StringIO包裹单行字符串,让csv.reader可以解析
    reader = csv.reader(StringIO(line))
    parsed_rows.append(next(reader))

content_df = pd.DataFrame(parsed_rows, columns=['timestamp', 'tilt', 'threshold'])
final_df = pd.concat([df['date'], content_df], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:36:16