在python中从distionary创建Pandasdf

zlwx9yxi  于 2023-02-17  发布在  Python
关注(0)|答案(2)|浏览(132)

我有来自API的数据,如下所示:

> {'Message': {'Success': True, 'ErrorMessage': ''},
> 'StoresAttributes': [{'StoreCode': '1004',
> 'Categories': [{'Code': 'Lctn',
> 'Attribute': {'Code': 'Long', 'Value': '16.99390523395146'}},
> {'Code': 'Lctn',
> 'Attribute': {'Code': 'Lat', 'Value': '52.56718450856377'}},
> {'Code': 'Offr', 'Attribute': {'Code': 'Bake', 'Value': 'True'}},
> {'Code': 'Pay', 'Attribute': {'Code': 'SCO', 'Value': 'True'}}]},
> {'StoreCode': '1005',
> 'Categories': [{'Code': 'Lctn',
> 'Attribute': {'Code': 'Long', 'Value': '14.2339250'}},
> {'Code': 'Lctn', 'Attribute': {'Code': 'Lat', 'Value': '53.8996090'}},
> {'Code': 'Offr', 'Attribute': {'Code': 'Bake', 'Value': 'True'}},
> {'Code': 'Pay', 'Attribute': {'Code': 'SCO', 'Value': 'True'}},
> {'Code': 'Offr', 'Attribute': {'Code': 'Bchi', 'Value': 'True'}}]},

我想用它来制作 Dataframe 。我试过使用loop或pd.DataFrame()函数,但它不能正常工作。
我想要实现的是df和后续列:
商店代码:1004,长:16.99,纬度:52、56,烘烤:没错。
有人能帮忙吗?
下面是我从json_normalize得到的结果
error

qvtsj1bj

qvtsj1bj1#

您可以先使用json_normalize,然后再使用pivot

import pandas as pd

data = {'Message': {'Success': True, 'ErrorMessage': ''}, 'StoresAttributes': [{'StoreCode': '1004', 'Categories': [{'Code': 'Lctn', 'Attribute': {'Code': 'Long', 'Value': '16.99390523395146'}}, {'Code': 'Lctn', 'Attribute': {'Code': 'Lat', 'Value': '52.56718450856377'}}, {'Code': 'Offr', 'Attribute': {'Code': 'Bake', 'Value': 'True'}}, {'Code': 'Pay', 'Attribute': {'Code': 'SCO', 'Value': 'True'}}]}, {'StoreCode': '1005', 'Categories': [{'Code': 'Lctn', 'Attribute': {'Code': 'Long', 'Value': '14.2339250'}}, {'Code': 'Lctn', 'Attribute': {'Code': 'Lat', 'Value': '53.8996090'}}, {'Code': 'Offr', 'Attribute': {'Code': 'Bake', 'Value': 'True'}}, {'Code': 'Pay', 'Attribute': {'Code': 'SCO', 'Value': 'True'}}, {'Code': 'Offr', 'Attribute': {'Code': 'Bchi', 'Value': 'True'}}]}]}
    
df = pd.json_normalize(data['StoresAttributes'], meta='StoreCode', record_path='Categories')
df.pivot(columns='Attribute.Code', values='Attribute.Value', index='StoreCode')

输出:

Attribute.Code  Bake  Bchi                Lat               Long   SCO
StoreCode
1004            True   NaN  52.56718450856377  16.99390523395146  True
1005            True  True         53.8996090         14.2339250  True
ekqde3dh

ekqde3dh2#

可以像这样使用json_normalize()函数:

data = [
     {"id": 1, "name": {"first": "Coleen", "last": "Volk"}},
     {"name": {"given": "Mark", "family": "Regner"}},
     {"id": 2, "name": "Faye Raker"},
 ]

pd.json_normalize(data)
    • 输出:**
id name.first name.last name.given name.family        name
0  1.0     Coleen      Volk        NaN         NaN         NaN
1  NaN        NaN       NaN       Mark      Regner         NaN
2  2.0        NaN       NaN        NaN         NaN  Faye Raker

您可以参考以下链接了解更多关于json_normalize()函数的信息。
CLICK HERE

相关问题