一个可能的选项是Pandas。
我有以下字典:
输入字典
f = {
'10A7': [{'line_item_id': '837234000000089050',
'item_id': '837234000000076055',
'name': 'Potato',
'quantity': 10.0}],
'20A7': [{'line_item_id': '837234000000089027',
'item_id': '837234000000076076',
'name': 'Apple',
'quantity': 10.0},
{'line_item_id': '837234000000095018',
'item_id': '837234000000076055',
'name': 'Potato',
'quantity': 10.0}]
}
我想以CSV格式保存上述词典的数据。
预期输出
项目,10A7,20A7,总
马铃薯,10,10,20
苹果,0,10,10
项是字典(名称(中存在的唯一名称的列表。帐单号码是字典的关键。Total是行中每个项目的总数。
如何将上述数据创建为CSV?
感谢
使用pandas
进行某些操作
首先,我们逐行打开您的字典pandas
import pandas as pd
df = pd.DataFrame.from_dict(data, orient = 'index').stack().reset_index()
df2 = pd.concat([df, pd.DataFrame.from_records(df[0].values)], axis=1).drop(columns = ['level_1',0])
df2
这会生成
level_0 line_item_id item_id name quantity
0 10A7 837234000000089050 837234000000076055 Potato 10.0
1 20A7 837234000000089027 837234000000076076 Apple 10.0
2 20A7 837234000000095018 837234000000076055 Potato 10.0
现在我们将其转换为aggegate视图
df3 = df2.pivot(index = 'name', columns = 'level_0', values = 'quantity').fillna(0)
df3
产生
level_0 10A7 20A7
name
Apple 0.0 10.0
Potato 10.0 10.0
现在我们添加'Total'
并保存到csv
df3['Total'] = df3.sum(axis=1)
df3.to_csv('out.csv')
df3现在看起来像这个
level_0 10A7 20A7 Total
name
Apple 0.0 10.0 10.0
Potato 10.0 10.0 20.0
import pandas as pd
然后您可以将字典转换为数据帧
df = pd.DataFrame.from_dict(dictionary)
然后可以将数据帧df保存到csv文件中
df.to_csv(filename)
你也可以在中尝试答案https://datatofish.com/dictionary-to-dataframe/