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

如何合并Tabula提取PDF表格得到的DataFrame多行内容

解决Tabula提取PDF表格后的作物建议合并问题

这种从PDF里提取表格后遇到的分组合并需求太常见了,用pandas就能轻松搞定,我给你一步步说明操作方法:

核心思路

  1. 先把Crop(Varieties)列的缺失值(NaN)用前一个非空的作物名称填充,确保同一作物的所有行都有对应的作物标签
  2. 按填充后的作物列分组,把同属一个作物的Crop Specific Advisory内容合并成单行

具体代码实现

假设你已经用Tabula把PDF表格转换成了pandas的DataFrame(命名为df),执行以下代码:

import pandas as pd

# 步骤1:填充缺失的作物名称,用前一个非空值向下填充
df['Crop(Varieties)'] = df['Crop(Varieties)'].ffill()

# 步骤2:按作物分组,合并建议内容(这里用换行符分隔,可根据需求换成空格或其他符号)
merged_df = df.groupby('Crop(Varieties)')['Crop Specific Advisory'].agg(
    lambda x: '\n'.join([item.strip() for item in x.dropna()])
).reset_index()

代码细节说明

  • ffill():全称是forward fill,会自动把上一个非空的作物名称填充到下面所有的NaN行,这样同一作物的所有行就都有了统一的标识
  • groupby('Crop(Varieties)'):按作物名称分组,把属于同一作物的所有行归为一组
  • agg(lambda x: ...):对每组的Crop Specific Advisory列做聚合操作:
    • x.dropna():先过滤掉该组中为空的建议行(避免合并空字符串)
    • item.strip():去掉每个建议行前后的多余空格或换行,让合并后的内容更整洁
    • '\n'.join(...):用换行符把所有建议行连接起来,如果你想要用空格分隔,换成' '.join(...)即可

额外优化建议

如果你的原始数据里有重复的建议内容,可以在合并前先去重:

merged_df = df.groupby('Crop(Varieties)')['Crop Specific Advisory'].agg(
    lambda x: '\n'.join([item.strip() for item in x.dropna().unique()])
).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:19:05