gpt4 book ai didi

python - 如何将嵌套的 json 结构转换为数据框

转载 作者:行者123 更新时间:2023-12-04 15:17:02 24 4
gpt4 key购买 nike

我将一个 JSON 转换为 DataFrame 并最终得到一个列“Structure_value”,该列具有以下值作为字典/字典列表:

                   Structure_value
[{'Room': 6, 'Length': 7}, {'Room': 6, 'Length': 7}]
[{'Room': 6, 'Length': 22}]
[{'Room': 6, 'Length': 8}, {'Room': 6, 'Length': 9}]

因为它是一个对象,所以我猜它以这种格式结束。

我需要将它分成以下四列:

Structure_value_room_1
结构_值_长度_1
Structure_value_room_2
结构_值_长度_2

StackOverflow 上的所有其他解决方案仅处理将简单 JSON 转换为 DataFrame 而不是嵌套结构。

P.S.:我知道我可以通过显式命名字段来做一些事情,但我需要一个通用的解决方案,以便将来可以处理任何这种格式的 JSON

[编辑]:输出应该是这样的:

   Structure_value_room_1  Structure_value_length_1  Structure_value_room_2  \
0 6 7 6.0
1 6 22 NaN
2 6 8 6.0

Structure_value_length_2
0 7.0
1 NaN
2 9.0

最佳答案

使用带有枚举的嵌套字典理解的列表理解来删除重复的字典键,最后将字典列表传递给 DataFrame 构造函数:

L = [ {f"{k}_{i}": v for i, y in enumerate(x, 1) 
for k, v in y.items()}
for x in df["Structure_value"] ]
df = pd.DataFrame(L)
print(df)

Room_1 Length_1 Room_2 Length_2
0 6 7 6.0 7.0
1 6 22 NaN NaN
2 6 8 6.0 9.0

对于问题使用的列名:

def json_to_df(df, column):

L = [ {f"{column}_{k.lower()}_{i}": v for i, y in enumerate(x, 1)
for k, v in y.items()}
for x in df[column] ]
return pd.DataFrame(L)


df1 = json_to_df(df, 'Structure_value')
print(df1)
Structure_value_room_1 Structure_value_length_1 Structure_value_room_2 \
0 6 7 6.0
1 6 22 NaN
2 6 8 6.0

Structure_value_length_2
0 7.0
1 NaN
2 9.0

关于python - 如何将嵌套的 json 结构转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58801119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com