0

我想尝试将一系列项目上传到 test.wikidata,创建项目,然后添加初始声明 P571。csv 文件有时有日期值,有时没有。当没有给出日期值时,我想写出一个占位符“某个值”。

想象一个像这样的数据框:

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 遍历数据框的每一行并为每个新的日期值创建一个新的声明。对于好的示例和文档,我会重视任何反馈或建议。非常感谢!

4

1 回答 1

0

回顾这一点,解决方案是使用 .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)
于 2020-10-03T14:56:16.443 回答