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

如何根据文本内容拆分Pandas DataFrame单列至多列?

Pandas单列拆分多列问题解决

问题场景

现有一个含单列的Pandas DataFrame,数据如下:

id    text_col
1     Was it Accurate?: Yes\n\nReasoning: This is a sample text
2     Was it Accurate?: Yes\n\nReasoning: This is a sample text
3     Was it Accurate?: No\n\nReasoning: This is a sample text

需要将text_col拆分为Was it Accurate?和Reasoning两列,最终目标格式:

id    Was it Accurate?    Reasoning
1     Yes             This is a sample text
2     Yes             This is a sample text
3     No              This is a sample text

尝试使用"\n\nReasoning:"拆分未得到预期结果,代码如下:

df[['Was it Accurate?','Reasoning']] = df['text_col'].str.split("\n\nReasoning:")

问题原因

当前拆分仅将文本从\n\nReasoning:处截断,但第一列仍保留了Was it Accurate?: 前缀,所以无法直接得到目标值。

解决方案

方法1:分步拆分+前缀清理

先拆分出两部分,再移除第一列的冗余前缀:

# 按Reasoning分隔符拆分,expand=True确保返回DataFrame
df[['Was it Accurate?', 'Reasoning']] = df['text_col'].str.split('\n\nReasoning:', expand=True)
# 替换掉第一列的固定前缀
df['Was it Accurate?'] = df['Was it Accurate?'].str.replace('Was it Accurate?: ', '')

方法2:正则表达式提取(推荐)

直接用正则匹配提取目标内容,一步到位:

# 用正则分组提取两个字段的内容
df[['Was it Accurate?', 'Reasoning']] = df['text_col'].str.extract(r'Was it Accurate?: (.*?)\n\nReasoning: (.*)')

正则说明:

  • (.*?):非贪婪匹配Was it Accurate?: 后的内容(即Yes/No)
  • (.*):匹配\n\nReasoning: 后的所有文本内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:22:37