我看过一些关于导出嵌套字典的帖子,但我想尝试的是使用每个嵌套字典的最深层来导出一个嵌套字典,并将其带到最前面。
试图制作一个程序,目的是创建一个Excel电子表格,以帮助玩家跟踪他们的RPG保存文件中的项目。为了做到这一点,我收集了一个数据点字典,这些数据点将跟踪各种游戏内道具,并与角色级别相关。
我正试图找到一种方法来导出一个嵌套的字典,这将使它的东西可以导出到Excel。
使用字典值格式的示例:
dict = [{
'id': 1,
'name': 'A',
'class': '1',
'item_details': [
{'level': 1,
'item': 'item A',
'quantity': 5},
{'level': 3,
'item': 'item A',
'quantity': 5},
{'level': 3,
'item': 'item C',
'quantity': 5}
]
},
{
'id': 2,
'name': 'B',
'class': '2',
'item_details': [
{'level': 1,
'item': 'item B',
'quantity': 2},
{'level': 2,
'item': 'item D',
'quantity': 10}
]
},
{
'id': 3,
'name': 'B',
'class': '3'
}]
对于我的目的,我正在寻找一种方法来导出这种类似于编码数据的方式,在那里它会提取项目的详细信息,在那里它找到它们,否则留下空白。导出后的数据帧看起来像这样:
id name class level_1 item_1 quantity_1 level_2 item_2 quantity_2 level_2 item_2 quantity_2
1 A 1 1 item A 5 3 item A 5 3 item C 5
2 B 2 1 item B 2 2 item D 10
3 B 3
我相信数据透视表也是可能的。重要的是,我需要找到一些方法来访问item_details中的每个项目,而不是将它们全部本地化到单个单元格中。一旦我可以得到提取必要数据并将所有关键数据导出到自己的单元格的程序,我可能可以从那里管理一些东西。
导出的数据帧不一定要看起来很漂亮,因为导出后它将用于创建更精简的界面。
不要使用dict
作为变量名这里我用的是data
import pandas as pd
df = pd.concat([pd.json_normalize(x, 'item_details', ['id', 'name', 'class'])
if 'item_details' in x
else pd.json_normalize(x)
for x in data])
print(df)
输出:
level item quantity id name class
0 1.0 item A 5.0 1 A 1
1 3.0 item A 5.0 1 A 1
2 3.0 item C 5.0 1 A 1
0 1.0 item B 2.0 2 B 2
1 2.0 item D 10.0 2 B 2
0 NaN NaN NaN 3 B 3
我不太明白你建议的格式~