如何将有序字典转换为 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
如何使用每列的每个键 ('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