Skip to main content
 首页 » 编程设计

python之如何将嵌套字典列表转换为 pandas DataFrame

2025年05月04日10shanyou

我有一些包含嵌套字典的数据,如下所示:

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