如何使用Pywikibot迭代CSV文件

2024-05-19 19:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想尝试上传一系列的条目到test.wikidata,创建条目,然后添加一个inception P571语句。csv文件有时有日期值,有时没有。当没有给出日期值时,我想写一个占位符“some value”

想象一下这样的数据帧:

df = {'Object': [1, 2,3], 'Date': [250,,300]}

但是,我不确定使用Pywikibot如何使用Pywikibot在csv文件上迭代,为每一行创建一个项并添加一条语句。以下是我编写的代码:

import pywikibot 
import pandas as pd
site = pywikibot.Site("test", "wikidata")
repo = site.data_repository()
df = pd.read_csv('experiment.csv')
item = pywikibot.ItemPage(repo)
for item in df:
    date = df['date']
    prop_date = pywikibot.Claim(repo, u'P571')
    if date=='':
        prop_date.setSnakType('somevalue')
    else:
        target = pywikibot.WbTime(year=date)
        prop_date.setTarget(target)
    item.addClaim(prop_date)

当我通过PAWS运行该命令时,我得到消息:KeyError: 'date'

但我认为这里真正的问题是,我不确定如何让Pywikibot迭代数据帧的每一行,并为每一个新的日期值创建一个新的声明。我会重视任何反馈或建议的好例子和文件。非常感谢


Tags: 文件csv数据testdfdaterepo条目
1条回答
网友
1楼 · 发布于 2024-05-19 19:29:01

回顾这一点,解决方案是使用.iterrows()或.itertuples()或.loc[]访问行中的值

所以

for item in df.itertuples():       
prop_date = pywikibot.Claim(repo, u'P571')
   if item.date=='':
        prop_date.setSnakType('somevalue')
    else:
        target = pywikibot.WbTime(year=date)
        prop_date.setTarget(target)
    item.addClaim(prop_date)

相关问题 更多 >