如何将结果按顺序保存到csv?意思是添加额外的列解释什么是“添加”和什么是“删除”以及什么是“更改”
我尝试了diff.to_csv('diff.csv')并得到了这个错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'to_csv'
这是python代码
from csv_diff import load_csv, compare
diff = compare(
load_csv(open("list1.csv"), key="ean"),
load_csv(open("list2.csv"), key="ean")
)
diff.to_csv('diff.csv')
额外信息
list1.csv
price, oldprice,title,brand,category,unit,ean,,
17,,VR BOX Virtual Reality 3D Glasses Bluetooth Game Remote Control For Phone Iphone,other,3d glasses,2023700513,272434,,
18,,3d Glasses,other,3d glasses,1493500513,2272434,,
22,,Zefas Active 3D GlassesFor SmartPhones,zefas,3d glasses,1342700513,2272456,,
22.98,,3D Glasses Circular Polarized Lenses for Polarized TV| 3D Cinemas,other,3d glasses,1992100513,2272483,,
25,,max3 pro,other,3d glasses,1904600513,2272432,,
28.27,,Red Blue Clip on Anaglyph Glasses,other,3d glasses,2068900513,2272453,,
list2.csv
price,oldprice,title,brand,category,unit,ean,,
22.98,,3D Glasses Circular Polarized Lenses for Polarized TV| 3D Cinemas,other,3d glasses,1992100513,2272483,,
25,,max3 pro,other,3d glasses,1904600513,2272432,,
59,,Red-blue Cyan Anaglyph 3D,terratec,3d glasses,2103700513,2272428,,
65,,Sinogoodies Passive 3D GlassesFor SmartPhones,sinogoodies,3d glasses,1603700513,2272464,,
69.91,,G15-DLP 3D Active Shutter Glasses for DLP-LINK DLP LINK 3D for Optoma Sharp LG Acer BenQ Projectors,other,3d glasses,2039200513,227243,,
70,,Sinogoodies Passive 3D GlassesFor Multi,sinogoodies,3d glasses,1603600513,2272464,,
运行的屏幕结果
compare(
load_csv(open("list1.csv"), key="ean"),
load_csv(open("list2.csv"), key="ean")
)
是
{'added': [{'price': '59', 'oldprice': '', 'title': 'Red-blue Cyan Anaglyph 3D',
'brand': 'terratec', 'category': '3d glasses', 'unit': '2103700513', 'ean': '22
72428', '': ''}, {'price': '70', 'oldprice': '', 'title': 'Sinogoodies Passive 3
D GlassesFor Multi', 'brand': 'sinogoodies', 'category': '3d glasses', 'unit': '
1603600513', 'ean': '2272464', '': ''}, {'price': '69.91', 'oldprice': '', 'titl
e': 'G15-DLP 3D Active Shutter Glasses for DLP-LINK DLP LINK 3D for Optoma Sharp
LG Acer BenQ Projectors', 'brand': 'other', 'category': '3d glasses', 'unit': '
2039200513', 'ean': '227243', '': ''}], 'removed': [{'price': '17', 'oldprice':
'', 'title': 'VR BOX Virtual Reality 3D Glasses Bluetooth Game Remote Control Fo
r Phone Iphone', 'brand': 'other', 'category': '3d glasses', 'unit': '2023700513
', 'ean': '272434', '': ''}, {'price': '18', 'oldprice': '', 'title': '3d Glasse
s', 'brand': 'other', 'category': '3d glasses', 'unit': '1493500513', 'ean': '22
72434', '': ''}, {'price': '22', 'oldprice': '', 'title': 'Zefas Active 3D Glass
esFor SmartPhones', 'brand': 'zefas', 'category': '3d glasses', 'unit': '1342700
513', 'ean': '2272456', '': ''}, {'price': '28.27', 'oldprice': '', 'title': 'Re
d Blue Clip on Anaglyph Glasses', 'brand': 'other', 'category': '3d glasses', 'u
nit': '2068900513', 'ean': '2272453', '': ''}], 'changed': [], 'columns_added':
[], 'columns_removed': []}
此解决方案不起作用
import pandas as pd
dataframe = pd.DataFrame(diff)
dataframe.to_csv("data.csv", header=True)
错误
'dict' object has no attribute 'to_csv'
表示diff
变量是字典,因此没有名为.to_csv
的方法您可以尝试将
diff
强制转换为csv文件,但无法正常工作。您的diff
当前是一个字典,其值是字典数组。此格式不适用于csv。如果使用Pandas
包,则需要字典中的值是字符串的数组。下面是带有示例的docs我建议您先考虑如何格式化
diff
,然后再转换为csv一个可行的方法是从
diff
字典创建两个CSV。添加和删除的值实际上是csv的正确格式。以下是一个例子:这些是csv包的docs
编辑:键应从添加的第一个元素中获取键
其他解决方案不起作用,因为您的数据没有正确的
DataFrame
结构。您需要首先从顶级键访问dict列表更改每个评论请求
您可以使用由
pandas
提供的to_csv
方法:相关问题 更多 >
编程相关推荐