У меня есть список, который я бы хотел преобразовать в dataframe. У меня около 30000 списков в переменной, называемой данными. как преобразовать это в dataframe со свойствами столбцов, product_id, description, ustomer_id и страной. Я хочу, чтобы свойства элемента были преобразованы в dataframe
data[0]
Out[16]:
{'event': 'Product',
'properties': {'invoice_no': '44',
'product_id': '67',
'description': 'cloth',
'customer_id': 55,
'country': 'US'}}
data[1]
Out[17]:
{'event': 'Product',
'properties': {'invoice_no': '55',
'product_id': '66',
'description': 'shoe',
'customer_id': 23,
'country': 'China'}}
Пробовал это,
new = pd.DataFrame.from_dict(data)
но он дал только два столбца, такие как "событие" и "свойства". Я хочу, чтобы свойства формировали фрейм данных
Используя небольшой пример:
>>> from pprint import pprint
>>> pprint(data)
[{'event': 'Product',
'properties': {'country': 'US',
'customer_id': 55,
'description': 'cloth',
'invoice_no': '44',
'product_id': '67'}},
{'event': 'Product',
'properties': {'country': 'China',
'customer_id': 23,
'description': 'shoe',
'invoice_no': '55',
'product_id': '66'}}]
Вы можете просто использовать выражение генератора для преобразования вашего dict в соответствующую форму:
>>> pd.DataFrame(d['properties'] for d in data)
country customer_id description invoice_no product_id
0 US 55 cloth 44 67
1 China 23 shoe 55 66
Вы также можете сделать:
from pandas.io.json import json_normalize
import pandas as pd
resultDf = pd.DataFrame()
for dictionary in data:
for key, value in dictionary.items():
if key == 'properties':
df = json_normalize(value)
resultDf = resultDf.append(df)
print(resultDf)
дает:
country customer_id description invoice_no product_id
0 US 55 cloth 44 67
1 China 23 shoe 55 66