首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Pywikibot遍历CSV文件

如何使用Pywikibot遍历CSV文件
EN

Stack Overflow用户
提问于 2020-09-29 03:35:40
回答 1查看 50关注 0票数 0

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

想象一下这样的数据帧:

代码语言:javascript
复制
df = {'Object': [1, 2,3], 'Date': [250,,300]}

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

代码语言:javascript
复制
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迭代数据帧的每一行,并为每个新的日期值创建一个新的声明。对于好的例子和文档,我会重视任何反馈或建议。非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-10-03 22:56:16

回过头来看,解决方案是使用.iterrows()或.itertuples()或.loc[]来访问行中的值。

所以

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64108537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档