如何组合/添加dictionairy密钥的值并导出到csv



我有以下字典:

输入字典

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
一个可能的选项是Pandas。
import pandas as pd

然后您可以将字典转换为数据帧

df = pd.DataFrame.from_dict(dictionary) 

然后可以将数据帧df保存到csv文件中

df.to_csv(filename)

你也可以在中尝试答案https://datatofish.com/dictionary-to-dataframe/

最新更新