如何将有序字典转换为 pandas 数据框,每个列的每个键值 ('label')

How to convert an ordered dict into a pandas dataframe with each key value ('label') for each column

如何使用每列的每个键 ('label') 将有序字典转换为 pandas 数据框。

```OderedDict = [OrderedDict([('dataCells',
               [OrderedDict([('label', 'BT Ltd'),
                             ('value', '00120000000I3eZAAS')]),
                OrderedDict([('label',
                              'BP | Alert generated for Rejected FileAct message in GTE'),
                             ('value', '5007R00002otgJRQAY')]),
                OrderedDict([('label', '12/27/2020 1:57 AM'),
                             ('value', '2020-12-27T06:57:16Z')]),
                OrderedDict([('label', '52'), ('value', 52)]),
                OrderedDict([('label', 'false'), ('value', False)]),
                OrderedDict([('label', 'true'), ('value', True)]),
                OrderedDict([('label', '00120000000I3eZ'),
                             ('value', '00120000000I3eZAAS')]),
                OrderedDict([('label', 'GTE'),
                             ('value', 'GTE')]),
                OrderedDict([('label', 'FM'),
                             ('value', 'FM')]),
                OrderedDict([('label', 'Cust'), ('value', 'Cust')]),
                OrderedDict([('label', 'Incident'),
                             ('value', 'Incident')]),
                OrderedDict([('label', '07370371'),
                             ('value', '5007R00002otgJRQAY')]),
                OrderedDict([('label', '5007R00002otgJR'),
                             ('value', '5007R00002otgJRQAY')]),
                OrderedDict([('label', '00120000000I3eZ'),
                             ('value', '00120000000I3eZAAS')]),
                OrderedDict([('label', 'BT UK'),
                             ('value', 'a93w000000001NSAAY')]),
                OrderedDict([('label', 'Amanda Pandas'),
                             ('value', '0052X000008LWapQAG')])])]),```

转换为 pandas 数据框

df = pd.DataFrame(report_results['factMap']['T!T']['rows'] )

#use pd.Series 在数据框中创建列

df = df.dataCells.apply(pd.Series)

我已经尝试了上面的方法,但我最终得到了有序的字典列 ({'label': 'GTE', 'value': 'GTE'}) 我怎样才能得到标签值 'GTE'?

创建数据框,展开 list 然后将 dict 转换为列

from collections import OrderedDict
data = [OrderedDict([('dataCells',
               [OrderedDict([('label', 'BT Ltd'),
                             ('value', '00120000000I3eZAAS')]),
                OrderedDict([('label',
                              'BP | Alert generated for Rejected FileAct message in GTE'),
                             ('value', '5007R00002otgJRQAY')]),
                OrderedDict([('label', '12/27/2020 1:57 AM'),
                             ('value', '2020-12-27T06:57:16Z')]),
                OrderedDict([('label', '52'), ('value', 52)]),
                OrderedDict([('label', 'false'), ('value', False)]),
                OrderedDict([('label', 'true'), ('value', True)]),
                OrderedDict([('label', '00120000000I3eZ'),
                             ('value', '00120000000I3eZAAS')]),
                OrderedDict([('label', 'GTE'),
                             ('value', 'GTE')]),
                OrderedDict([('label', 'FM'),
                             ('value', 'FM')]),
                OrderedDict([('label', 'Cust'), ('value', 'Cust')]),
                OrderedDict([('label', 'Incident'),
                             ('value', 'Incident')]),
                OrderedDict([('label', '07370371'),
                             ('value', '5007R00002otgJRQAY')]),
                OrderedDict([('label', '5007R00002otgJR'),
                             ('value', '5007R00002otgJRQAY')]),
                OrderedDict([('label', '00120000000I3eZ'),
                             ('value', '00120000000I3eZAAS')]),
                OrderedDict([('label', 'BT UK'),
                             ('value', 'a93w000000001NSAAY')]),
                OrderedDict([('label', 'Amanda Pandas'),
                             ('value', '0052X000008LWapQAG')])])])]

# create DF,  expand list, convert dict to columns
df = pd.DataFrame(data).explode("dataCells")["dataCells"].apply(lambda x: pd.Series(x))

输出

                                                    label                 value
                                                   BT Ltd    00120000000I3eZAAS
 BP | Alert generated for Rejected FileAct message in GTE    5007R00002otgJRQAY
                                       12/27/2020 1:57 AM  2020-12-27T06:57:16Z
                                                       52                    52
                                                    false                 False
                                                     true                  True
                                          00120000000I3eZ    00120000000I3eZAAS
                                                      GTE                   GTE
                                                       FM                    FM
                                                     Cust                  Cust
                                                 Incident              Incident
                                                 07370371    5007R00002otgJRQAY
                                          5007R00002otgJR    5007R00002otgJRQAY
                                          00120000000I3eZ    00120000000I3eZAAS
                                                    BT UK    a93w000000001NSAAY
                                            Amanda Pandas    0052X000008LWapQAG