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

如何从含多行内容单元格的DataFrame中提取数据并导出CSV

Pandas 多行文本单元格按字段提取导出方案

原始数据结构

现有DataFrame的Detail列存储了换行拼接的动物属性文本,结构如下:

Detail
  --------------
0  Animal: Lion,
    Weight: 600 kg,
    Class: Mammal

1  Animal: Monkey,
    Weight: 10 kg,

2  Animal: Snake,
    Class: Reptile

3  Animal: Frog,
    Class: Amphibian,
    Weight: 1 kg

4  Animal: Hawk,
    Class: Bird

目标需求

  • 逐行解析Detail列的多行文本,分别匹配Animal、Weight、Class三个字段
  • 匹配到对应字段则提取整行文本,匹配不到则填充NaN
  • 每个字段单独生成对应结构的DataFrame,最终分别导出为独立CSV文件

期望输出结构

  1. Animal表
Animal
  --------------
0  Animal: Lion,
1  Animal: Monkey,
2  Animal: Snake,
3  Animal: Frog,
4  Animal: Hawk,
  1. Weight表
Weight
  --------------
0  Weight: 600 kg,
1  Weight: 10 kg,
2  Weight: NaN
3  Weight: 1 kg,
4  Weight: NaN
  1. Class表
Class
  --------------
0  Class: Mammal,
1  Class: NaN
2  Class: Reptile
3  Class: Amphibian,
4  Class: NaN

原有代码问题

之前编写的代码存在3个核心逻辑错误:

  • 遍历单行内容时,错用整个Series的df['Detail'].str.contains(entry)做判断,返回的是整列布尔序列,无法作为单行的if判断条件
  • 普通Python字符串没有pandas专属的.str访问器,content.str.split('\n')会直接触发报错
  • 拆分文本后没有逐行匹配目标字段,直接将拆分后的列表存入结果,无法得到单字段的精准提取值

正确实现代码

import pandas as pd
import numpy as np

# 定义需要提取的字段列表
cols = ['Animal', 'Weight', 'Class']

for col in cols:
    extract_result = []
    # 逐行遍历Detail列内容
    for detail_content in df['Detail']:
        # 按换行拆分单元格内文本,去除前后空格、过滤空行
        line_list = [line.strip() for line in detail_content.split('\n') if line.strip()]
        # 逐行匹配当前字段
        match_value = np.nan
        for line in line_list:
            if col in line:
                match_value = line
                break
        extract_result.append(match_value)
    # 生成单字段DataFrame并导出CSV
    col_df = pd.DataFrame({col: extract_result})
    col_df.to_csv(f'{col}.csv', index=False)

逻辑说明

  • 拆分单元格文本时做空格清理和空行过滤,避免原始文本缩进、空行干扰匹配结果
  • 每个单元格拆分后逐行匹配目标字段,匹配到第一个对应字段就终止当前行遍历,执行效率更高
  • 导出时直接指定列名为字段名,不需要额外调整表头参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 20:19:01