我有一些包含嵌套字典的数据,如下所示:
mylist = [{"a": 1, "b": {"c": 2, "d":3}}, {"a": 3, "b": {"c": 4, "d":3}}]
如果我们将其转换为 pandas DataFrame,
import pandas as pd
result_dataframe = pd.DataFrame(mylist)
print(result_dataframe)
它会输出:
a b
0 1 {'c': 2, 'd': 3}
1 3 {'c': 4, 'd': 3}
我想转换字典列表并忽略嵌套字典的键。我的代码如下:
new_dataframe = result_dataframe.drop(columns=["b"])
b_dict_list = [document["b"] for document in mylist]
b_df = pd.DataFrame(b_dict_list)
frames = [new_dataframe, b_df]
total_frame = pd.concat(frames, axis=1)
total_frame 是我想要的:
a c d
0 1 2 3
1 3 4 3
但是我觉得我的代码有点复杂。有什么简单的方法可以解决这个问题吗?谢谢。
请您参考如下方法:
我遇到了类似的问题。我用了pd.json_normalize(x)它奏效了。唯一的区别是数据框的列名看起来会有些不同。
mylist = [{"a": 1, "b": {"c": 2, "d":3}}, {"a": 3, "b": {"c": 4, "d":3}}]
df = pd.json_normalize(mylist)
print(df)
输出:
<表类="s-表">
<头>
<日>日> 一个 公元前 b.d
<正文>
0 1 2 3 1 3 4 3
正文>
头>
表类="s-表">
