json 规范化 Dataframe 中的多个列

zc0qhyus  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(134)

因此,我有以下 Dataframe :

JSON blob看起来都像这样:

{"id":"dddd1", "random_number":"77777"}

我希望我的 Dataframe 看起来像这样:

基本上,我需要的是获得一种方法来迭代和规范化所有JSON blob列,并将它们放回 Dataframe 中的适当行(0-99)。

pd.json_normalize(data_frame.iloc[:, JSON_0,JSON_99])

出现以下错误:

IndexingError: Too many indexers

我可以逐个检查并规范化每个JSON_BLOB列,但这样做效率很低,因为JSON blob的原因,我无法通过Lambda函数或for循环找到正确的方法来完成此操作。我编写的for循环也会出现同样的错误:

array=[]
for app in data_frame.iloc[:, JSON_0,JSON_99]:
    data = {
        'id': data['id']
        
    }
    array.append(data)

test= pd.DataFrame(array)

IndexingError: Too many indexers

此外,一些JSON_Blob具有NAN值
任何建议都很好。

x6h2sr28

x6h2sr281#

你能试试这个吗:

normalized = pd.concat([df[i].apply(pd.Series) for i in df.iloc[:,2:]],axis=1) #2 is the position number of JSON_0.
final = pd.concat([df[['Root_id_PK','random_number']],normalized],axis=1)

如果您要使用问题中的列名:

normalized = pd.concat([df[i].apply(pd.Series).rename(columns={'id':'id_from_{}'.format(i),'random_number':'random_number_from_{}'.format(i)}) for i in df.iloc[:,2:]],axis=1)
final = pd.concat([df[['Root_id_PK','random_number']],normalized],axis=1)

相关问题