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

如何将列表中每个句子元素存入pandas列并避免Molecule列重复

问题原因

你当前的写法是将单个字符串的Molecule值和长度为N的句子列表sent_list直接传入pd.DataFrame构造函数,pandas会自动将长度不足的Molecule列重复填充到和句子列表相同的长度,最终得到N行数据,不符合一行对应一个分子的预期。

解决方案

你需要提前把单个分子对应的四个字段值计算完成,再构造DataFrame,如果需要处理多个分子,可先把所有分子的字段值存为字典列表后再统一转DataFrame。

单次查询单个分子的修改后代码

import spacy
import pandas as pd
import wikipediaapi

# 模型加载放外面,避免每次查询重复加载浪费资源
nlp = spacy.load('en_core_web_sm')
wiki_wiki = wikipediaapi.Wikipedia('en')

chemical = input("Write the name of molecule: ")
page_py = wiki_wiki.page(chemical)
summary = page_py.summary

# 拆分句子
doc = nlp(summary)
sent_list = [sent.text.strip() for sent in doc.sents]

# 提前计算各列对应值
data = {
    "Molecule": chemical,
    "Sentence1": sent_list[0] if len(sent_list)>=1 else "",
    "Sentence1 and sentence2": " ".join(sent_list[:2]) if len(sent_list)>=2 else " ".join(sent_list),
    "All_sentence": summary
}

# 构造DataFrame时外层加[],标识这是一行数据,不会自动拆分补全
df = pd.DataFrame([data])
print(df)

批量处理多个分子的版本

如果需要把多个分子的结果整合到同一个DataFrame里,可以用如下写法:

import spacy
import pandas as pd
import wikipediaapi

nlp = spacy.load('en_core_web_sm')
wiki_wiki = wikipediaapi.Wikipedia('en')

# 要查询的分子列表可自行修改
chemical_list = ["MgO", "CaO", "NaCl"]
all_data = []

for chemical in chemical_list:
    page_py = wiki_wiki.page(chemical)
    summary = page_py.summary
    doc = nlp(summary)
    sent_list = [sent.text.strip() for sent in doc.sents]
    
    all_data.append({
        "Molecule": chemical,
        "Sentence1": sent_list[0] if len(sent_list)>=1 else "",
        "Sentence1 and sentence2": " ".join(sent_list[:2]) if len(sent_list)>=2 else " ".join(sent_list),
        "All_sentence": summary
    })

df = pd.DataFrame(all_data)
print(df)
关键改动说明
  • 构造DataFrame时给字段字典外层加[],明确告诉pandas这是一行数据的所有字段值,不会触发自动补全逻辑
  • 提前计算你需要的四个自定义列的取值,不需要单独存储每个句子的列
  • 增加了列表长度判断,避免分子摘要过短、句子不足2个时出现索引报错
  • 把spacy模型加载、维基接口初始化放到循环外,大幅提升批量处理的效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:15:06