为了账号安全,请及时绑定邮箱和手机立即绑定

如何将字典列表和嵌套列表转换为 pandas Dataframe 以便在 markdown

如何将字典列表和嵌套列表转换为 pandas Dataframe 以便在 markdown

HUH函数 2022-12-06 16:41:13
我有以下字典列表(其中包含嵌套列表):compatibility = [  {'region': 'NTSC-U',   'stats': [     {'os': 'Windows', 'state': 'Playable'},      {'os': 'Linux', 'state': 'Playable'},     {'os': 'Mac', 'state': 'N/A'}   ]},    {'region': 'PAL',    'stats': [      {'os': 'Windows', 'state': 'Playable'},      {'os': 'Linux', 'state': 'N/A'},       {'os': 'Mac', 'state': 'N/A'}    ]},     {'region': 'NTSC-J',     'stats': [       {'os': 'Windows', 'state': 'N/A'},        {'os': 'Linux', 'state': 'N/A'},       {'os': 'Mac', 'state': 'N/A'}   ]}]我正在尝试使用pytablewriter并pandas为此数据生成降价表,但我似乎无法全神贯注地处理数据框的唯一值和列排序。这是我的函数,其中包含此输出的外观示例:def generate_table():    compatibility = find_compatibility()    writer = MarkdownTableWriter()    writer.from_dataframe(        pd.DataFrame({'NTSC-U': ['Playable', 'Playable', 'N/A'], 'PAL': ['Playable', 'N/A', 'N/A'],                       'NTSC-J': ['N/A', 'N/A', 'N/A']}, index=['Windows', 'Linux', 'Mac']),        add_index_column=True,    )    writer.write_table()我将如何生成这个?我已经考虑过使用集合来提取唯一的操作系统名称,但这似乎不适用于带有嵌套列表的字典列表。(并且由于数据结构有时只包含一个区域,因此它需要是动态的)。任何帮助深表感谢!
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您可以从规范化 json开始,选择“stats”作为记录路径。

df = pd.json_normalize(compatibility, "stats", ["region"])

print(df)

        os     state  region

0  Windows  Playable  NTSC-U

1    Linux  Playable  NTSC-U

2      Mac       N/A  NTSC-U

3  Windows  Playable     PAL

4    Linux       N/A     PAL

5      Mac       N/A     PAL

6  Windows       N/A  NTSC-J

7    Linux       N/A  NTSC-J

8      Mac       N/A  NTSC-J

然后你只需使用 pivot 来获得所需的输出。


df = df.pivot("os", "region", values="state")

print(df)

region  NTSC-J    NTSC-U       PAL

os                                

Linux      N/A  Playable       N/A

Mac        N/A       N/A       N/A

Windows    N/A  Playable  Playable


查看完整回答
反对 回复 2022-12-06
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号