pandas Python panda json_normalize一个 Dataframe

t3psigkw  于 2023-02-11  发布在  Python
关注(0)|答案(2)|浏览(150)

我尝试在 Dataframe 上执行pd.json_normalized,但结果是空 Dataframe 。
初始 Dataframe (https://i.stack.imgur.com/jGphv.png
在应用json_normalized之后,

df1 = pd.json_normalize(df)
print(df1)

它变成一个空 Dataframe 。(https://i.stack.imgur.com/733Dx.png
当我尝试使用下面的命令手动定义 Dataframe 时,我得到了预期的输出

data = [
    {'birthday': '542217600000', 'first_name': 'Char', 'gender': 'Male', 'last_name': 'Mander', 'nick_name': ''},
    {'birthday': '967046400000', 'first_name': 'ABC', 'gender': 'Male', 'last_name': 'ZXY', 'nick_name': ''},
    {'birthday': '739900800000', 'first_name': 'Test', 'gender': 'Male', 'last_name': 'tickles', 'nick_name': ''}
]

birthday = pd.json_normalize(data, max_level=1)
print(birthday)

https://i.stack.imgur.com/IB2th.png
我可以知道如何直接从 Dataframe 进行标准化吗?

z9ju0rcb

z9ju0rcb1#

您应该将一个系列传递给json_normalize,而不是 Dataframe :

# your initial DataFrame
df = pd.DataFrame({'properties': data})

# passing the relevant column/Series
birthday = pd.json_normalize(df['properties'], max_level=1)

输出:

birthday first_name gender last_name nick_name
0  542217600000       Char   Male    Mander          
1  967046400000        ABC   Male       ZXY          
2  739900800000       Test   Male   tickles
tzdcorbm

tzdcorbm2#

请注意,在pd.DataFrame上调用dict()不会生成有效的JSON对象,因此您需要一个变通方法,例如:

regular_json = [row[1].to_dict() for row  in df.iterrows()]
pd.json_normalize(regular_json)

相关问题