我有一本字典,我想从中制作一个数据框。
这是我的字典:
my_dictio =
{'url': 'www.google.com', 'value':
[{'Car': 'Mercedes', 'Engine': 'Hybrid', 'Entity1': {'Country': 'US', 'Owner': 'Richard', 'Entity2': {'Type': 'type1', 'Payment': 'cash'}}},
{'Car': 'Audi', 'Engine': 'Hybrid', 'Entity1': {'Country': 'DE', 'Owner': 'Mesut', 'Entity2': {'Type': 'type2', 'Payment': 'cash'}}},
{'Car': 'Volkswagen', 'Engine': 'Gas', 'Entity1': {'Country': 'FR', 'Owner': 'Paul', 'Entity2': {'Type': 'type3', 'Payment': 'card'}}}]}
这是我正在使用的代码,当我运行它时,我将Car
,Engine
,Entity1
作为列:
dictio1 = my_dictio ['value']
df1= pd.DataFrame(dictio1)
这是我的预期结果:
我想学习,看看问题出在哪里。感谢您的帮助。
答案 0 :(得分:2)
imo,更容易就地编辑。
import pandas as pd
my_dictio = {'url': 'www.google.com', 'value':
[{'Car': 'Mercedes', 'Engine': 'Hybrid', 'Entity1': {'Country': 'US', 'Owner': 'Richard', 'Entity2': {'Type': 'type1', 'Payment': 'cash'}}},
{'Car': 'Audi', 'Engine': 'Hybrid', 'Entity1': {'Country': 'DE', 'Owner': 'Mesut', 'Entity2': {'Type': 'type2', 'Payment': 'cash'}}},
{'Car': 'Volkswagen', 'Engine': 'Gas', 'Entity1': {'Country': 'FR', 'Owner': 'Paul', 'Entity2': {'Type': 'type3', 'Payment': 'card'}}}]}
ok = my_dictio['value']
for i in ok:
i['Type'] = i['Entity1']['Entity2']['Type']
i['Owner'] = i['Entity1']['Owner']
del i['Entity1']
df1= pd.DataFrame(ok)
答案 1 :(得分:1)
您可以这样操作:
import pandas as pd
my_dictio = {'url': 'www.google.com', 'value':
[{'Car': 'Mercedes', 'Engine': 'Hybrid', 'Entity1': {'Country': 'US', 'Owner': 'Richard', 'Entity2': {'Type': 'type1', 'Payment': 'cash'}}},
{'Car': 'Audi', 'Engine': 'Hybrid', 'Entity1': {'Country': 'DE', 'Owner': 'Mesut', 'Entity2': {'Type': 'type2', 'Payment': 'cash'}}},
{'Car': 'Volkswagen', 'Engine': 'Gas', 'Entity1': {'Country': 'FR', 'Owner': 'Paul', 'Entity2': {'Type': 'type3', 'Payment': 'card'}}}]}
values = my_dictio['value']
car = []
engine = []
owner = []
car_type = []
for v in values:
car.append(v['Car'])
engine.append(v['Engine'])
owner.append(v['Entity1']['Owner'])
car_type.append(v['Entity1']['Entity2']['Type'])
df = pd.DataFrame({'car':car, 'engine':engine, 'owner':owner, 'car_type':car_type})
print(df)
输出以下内容:
car engine owner car_type
0 Mercedes Hybrid Richard type1
1 Audi Hybrid Mesut type2
2 Volkswagen Gas Paul type3
请注意,Python中的type
是保留关键字。我会远离使用...
答案 2 :(得分:1)
尝试一下
my_dictio = {'url': 'www.google.com', 'value':
[{'Car': 'Mercedes', 'Engine': 'Hybrid', 'Entity1': {'Country': 'US', 'Owner': 'Richard', 'Entity2': {'Type': 'type1', 'Payment': 'cash'}}},
{'Car': 'Audi', 'Engine': 'Hybrid', 'Entity1': {'Country': 'DE', 'Owner': 'Mesut', 'Entity2': {'Type': 'type2', 'Payment': 'cash'}}},
{'Car': 'Volkswagen', 'Engine': 'Gas', 'Entity1': {'Country': 'FR', 'Owner': 'Paul', 'Entity2': {'Type': 'type3', 'Payment': 'card'}}}]}
代码:
for row in dic['value']:
owner = row.get('Entity1', {}).get('Owner')
_type = row.get('Entity1', {}).get('Entity2', {}).get('Type')
row.pop('Entity1')
row.update({'Owner':owner, 'Type':_type})
df = pd.DataFrame(dic['value'])
结果: