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

如何提取DataFrame中以逗号为分隔符的内嵌DataFrame?

解决内嵌逗号分隔DataFrame的提取问题

我来帮你搞定这个内嵌DataFrame的提取问题!你之前的方法之所以失效,是因为直接将body列存为CSV再读取时,没有正确处理内嵌数据里的逗号、引号等特殊格式——默认的to_csv会把单元格内容自动转义,但读取时如果没匹配对应的转义规则,就会把原本属于同一单元格的内容拆分开,导致结构混乱。

下面给你两种更可靠的解决方案,不用存文件来回折腾,直接在内存里处理原DataFrame即可:

方案一:直接拆分字符串(适合无复杂转义的情况)

如果你的body列内容只是简单的逗号分隔(没有内嵌引号或逗号),可以用str.split结合expand=True直接拆分:

import pandas as pd

# 读取主DataFrame(你的原有代码)
data_sfr_trace = pd.read_csv('10_trace.csv', low_memory=False)

# 拆分body列为多列,expand=True会自动生成新的DataFrame
body_df = data_sfr_trace['body'].str.split(',', expand=True)

# 给拆分后的列设置自定义名称(根据实际需求调整)
body_df.columns = [f'body_col_{idx+1}' for idx in range(body_df.shape[1])]

# (可选)将拆分后的列和原DataFrame合并
merged_df = pd.concat([data_sfr_trace.drop('body', axis=1), body_df], axis=1)

方案二:用StringIO解析(适合带引号/转义的复杂情况)

如果body列的内容本身是标准CSV格式(比如包含被引号包裹的带逗号字段),用StringIO把列内容当成内存中的CSV文件来解析,能完美处理转义:

import pandas as pd
from io import StringIO

# 读取主DataFrame(你的原有代码)
data_sfr_trace = pd.read_csv('10_trace.csv', low_memory=False)

# 将body列的所有行拼接成带换行符的字符串,模拟CSV文件内容
body_csv_content = '\n'.join(data_sfr_trace['body'].astype(str))

# 用StringIO读取拼接后的内容,pd.read_csv会自动处理CSV的转义规则
body_df = pd.read_csv(StringIO(body_csv_content), header=None, sep=',', low_memory=False)

# 让拆分后的DataFrame索引和原DataFrame对齐,方便后续合并
body_df.index = data_sfr_trace.index

# (可选)合并到原DataFrame
merged_df = pd.concat([data_sfr_trace.drop('body', axis=1), body_df], axis=1)

这两种方法都能避免存文件带来的格式破坏问题,直接在内存中完成拆分,效率更高也更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:25:49