我有两张相似的桌子(“历史.csv“):
Historical :
id | url | url2 | url3 | Time
1 A B C 5
2 D E F 8
以及(“新建.csv“):
^{pr2}$我想更新新的。时间带有历史。时间值,如果“url”列匹配。 i、 e.此处所需的输出更新了url“A”:
New2 :
id | url | url2 | url3 | Time
1 A Z K 5
2 G H I 11
我尝试了以下方法:
Historical = pd.DataFrame.from_csv("hist.csv", index_col='id', sep='\t', encoding='utf-8')
New = pd.DataFrame.from_csv("new.csv", index_col='id', sep='\t', encoding='utf-8')
for index, row in New.iterrows():
New.loc[index,'Time']=Historical.loc[historical['url'] == row['url'],'Time']
New.to_csv("new2.csv", sep='\t', encoding='utf-8')
提高:
ValueError: Must have equal len keys and value when setting with an iterable
PS:我发现了这条线: Updating a DataFrame based on another DataFrame 但是,似乎建议的带有“merge”的解决方案并不真正适合我的需要,因为我有很多专栏?在
基本问题是
Historical.loc[Historical['url'] == row['url'],'Time']
返回一个序列(即使只有一行或没有行符合条件Historical['url'] == row['url']
-匹配)。示例-然后尝试将这个DataFrame设置为
New
DataFrame的一个单元格,这就是导致问题的原因。在因为在你的评论里-
代码的一个快速修复方法是检查
^{2}$row['url']
是否存在于另一个数据帧中,并且仅当为true时,使用-相关问题 更多 >
编程相关推荐