如何将此 OrderedDict 排序为 pandas 数据框?

Posted

技术标签:

【中文标题】如何将此 OrderedDict 排序为 pandas 数据框?【英文标题】:How to sort this OrderedDict into a pandas dataframe? 【发布时间】:2021-10-24 23:34:19 【问题描述】:

我正在尝试将“epd:amount”中的这些 OrderedDicts 放入具有 3 列的 pandas Dataframe:'@xmlns:epd'; '@epd: 模块' ; '#文本'。我现在尝试了一段时间。有人猜对了吗?

OrderedDict([('epd:amount',
                         [OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'A1'),
                                       ('#text', '0.0')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'A2'),
                                       ('#text', '0.0')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'A3'),
                                       ('#text', '0.927477418791169')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'A1-A3'),
                                       ('#text', '0.927477418791169')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'A5'),
                                       ('#text', '5.83315996933576')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'C2'),
                                       ('#text', '0.0')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'C3'),
                                       ('#text', '0.0')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'D'),
                                       ('@epd:scenario', 'energetisch'),
                                       ('#text', '0.0')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'D'),
                                       ('@epd:scenario', 'stofflich'),
                                       ('#text', '0.0')])])

【问题讨论】:

向社区证明您也在致力于解决您的问题,这一点很重要。你都尝试了些什么?最好的展示方式是包含您的代码尝试的 text 版本。如果上面的数据要存储在变量“foo”中,pandas.DataFrame(foo['epd:amount']) 会给你什么? 我以后会做的。这是生命周期分析数据,它显示了玻璃材料不同生命阶段的二氧化碳排放值。我会在未来提供更多的上下文。感谢您的努力! 【参考方案1】:

它是一个字典,所以你可以通过key获取一个值,然后将其转换为dataframe。为简单起见,我删除了您的一些数据。

import pandas as pd
from  collections import OrderedDict

x = OrderedDict([('epd:amount',
                         [OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'A1'),
                                       ('#text', '0.0')]),
                          OrderedDict([('@xmlns:epd',
                                        'http://www.iai.kit.edu/EPD/2013'),
                                       ('@epd:module', 'D'),
                                       ('@epd:scenario', 'stofflich'),
                                       ('#text', '0.0')])])])

df = pd.DataFrame(data['epd:amount'])

【讨论】:

没问题,非常有趣的数据!

以上是关于如何将此 OrderedDict 排序为 pandas 数据框?的主要内容,如果未能解决你的问题,请参考以下文章

OrderedDict如何在Python中保持秩序

OrderedDict 排序不正确

OrderedDict

python 从排序的OrderedDict获取键/值。

Python pands和matplotlib常用命令

如何在 python3 中将 OrderedDict 转换为常规字典