我将 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
Structure_value_length_1
Structure_value_room_2
Structure_value_length_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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)