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

如何从PDF提取物种作者信息并迭代添加至Pandas新列

解决方法:将PDF提取的物种全名匹配到DataFrame对应列

看了你的问题,核心是循环遍历物种时没把匹配结果对应到DataFrame的正确行,导致赋值失效。这里给你两种简单直接的解决方案:

方法1:使用enumerate遍历并直接赋值

通过enumerate同时获取行索引和物种名,精准给full_name列的对应行赋值:

from PyPDF2 import PdfFileReader
import pandas
import regex

table = pandas.read_csv('mydata.csv')
table['full_name'] = ''
tmp = []
pdf = 'myfile.pdf'
pdf_r = PdfFileReader(pdf)
page_rg = range(29, 225)
for p in page_rg:
    page = pdf_r.getPage(p)
    text = page.extractText()
    tmp.append(text)
full_text = ''.join(tmp)

# 修改后的循环部分
for i, sp in enumerate(table.species):
    sp_re = sp + r'\s+[(A-Z][^:(\/]+(?=\s)'
    matches = regex.findall(sp_re, full_text)
    # 有匹配结果就取第一个,否则留空
    table.loc[i, 'full_name'] = matches[0] if matches else ''

关键说明:

  • enumerate(table.species)返回每个物种的**行索引i**和物种名sp,确保赋值对应到正确行
  • findall返回匹配结果列表,取第一个元素matches[0]避免把列表存入单元格
  • 用if matches判断是否找到结果,没匹配到则留空字符串

方法2:使用pandas apply函数(推荐)

更符合pandas的高效用法,通过自定义函数+apply批量处理:

from PyPDF2 import PdfFileReader
import pandas
import regex

table = pandas.read_csv('mydata.csv')
tmp = []
pdf = 'myfile.pdf'
pdf_r = PdfFileReader(pdf)
page_rg = range(29, 225)
for p in page_rg:
    page = pdf_r.getPage(p)
    text = page.extractText()
    tmp.append(text)
full_text = ''.join(tmp)

# 定义提取全名的函数
def get_full_species_name(species):
    pattern = species + r'\s+[(A-Z][^:(\/]+(?=\s)'
    matches = regex.findall(pattern, full_text)
    return matches[0] if matches else ''

# 批量应用函数生成full_name列
table['full_name'] = table['species'].apply(get_full_species_name)

优势:

  • 代码更简洁,避免手动循环
  • 处理大数据集时效率更高,符合pandas的向量式操作逻辑

验证结果

修改后你的数据集会生成期望的输出:

id_ref  id_sp  species                          full_name
0  20053  60645  Species Subspecies  
1  20053  61094  Acantholimon lycopodioides  Acantholimon lycopodioides (Girard) Boiss.
2  20053  61095  Achillea millefolium        Achillea millefolium L.
3  20053  61096  Aconitum chasmanthum        Aconitum chasmanthum Stapf ex Holmes
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:50:01