我正在尝试提取从请求中获得的JSON信息,但有一点麻烦。
由于我的数据是嵌套的JSON,因此我首先使用
df = json_normalize(response)
将信息放入df。但是结果是我得到了一个df,其中仍然有一列包含JSON样式信息的列,我无法再使用json_normalize进行提取。 df如下:
id duration columnA
1 12 [{"A": "600", "B": "30", "C": "50"},{"A": "200", "B": "35", "C": "50"}]
2 5 [{"A": "300", "B": "70", "C": "80"},{"A": "400", "B": "76", "C": "90"}]
但是当我尝试
df2 = json_normalize(df['columnA'])
我只收到错误消息“ AttributeError:'列表'对象没有属性'值'”
因此,我想得到一个df,例如:
A B C
600 30 50
200 35 50
300 70 80
400 76 90
答案 0 :(得分:0)
您可以尝试一下吗?
df = json_normalize(response, 'columnA', ['A','B','C'])
假设A,B和C是平坦的
答案 1 :(得分:0)
您可以将每个内部对象和concat
归一化的数据帧归一化:
import pandas as pd
from pandas.io.json import json_normalize
df = pd.DataFrame(
[
[
1,
2,
[{"A": "600", "B": "30", "C": "50"}, {"A": "200", "B": "35", "C": "50"}],
],
[
2,
5,
[{"A": "300", "B": "70", "C": "80"}, {"A": "400", "B": "76", "C": "90"}],
],
],
columns='id duration columnA'.split(),
)
print(pd.concat(list(df.columnA.map(json_normalize))))
输出:
A B C
0 600 30 50
1 200 35 50
0 300 70 80
1 400 76 90