📜  嵌套 dict 到 df - Python (1)

📅  最后修改于: 2023-12-03 15:25:24.220000             🧑  作者: Mango

嵌套 dict 到 df - Python

在Python中,我们可以使用字典(dict)来保存多个数据,每个数据都有一个唯一的键(key)来进行访问。有时候我们需要将多个字典合并成一个数据表(DataFrame)来进行分析和处理。这时候就需要将嵌套字典转成数据表。

嵌套字典

嵌套字典就是在一个字典里面再放置一个或多个字典。例如:

dict_nested = {
    "Adam": {"age": 25, "gender": "male", "city": "New York"},
    "Bob": {"age": 30, "gender": "male", "city": "Los Angeles"},
    "Cathy": {"age": 28, "gender": "female", "city": "San Francisco"}
}

上面的例子中,dict_nested 是一个顶层字典,其中包含了三个子字典:"Adam""Bob""Cathy"

嵌套字典转数据表

要将嵌套字典转成数据表,我们可以使用 pandas 库中的 DataFrame() 函数。我们需要先将子字典转成数据表,然后再将它们合并起来。具体步骤如下:

  1. 将顶层字典的键(即人名)作为新的一列(列名为 "name"
  2. 将每个子字典转成数据表
  3. 在每个数据表中加上一列 "name",并将该列的值设为对应的人名
  4. 将所有数据表合并成一张数据表

下面是具体的代码实现:

import pandas as pd

dict_nested = {
    "Adam": {"age": 25, "gender": "male", "city": "New York"},
    "Bob": {"age": 30, "gender": "male", "city": "Los Angeles"},
    "Cathy": {"age": 28, "gender": "female", "city": "San Francisco"}
}

# Create an empty DataFrame
df = pd.DataFrame()

# Add the "name" column
df["name"] = dict_nested.keys()

# Loop through each sub-dictionary
for name, nested_dict in dict_nested.items():
    # Convert the sub-dictionary to a DataFrame
    temp_df = pd.DataFrame.from_dict(nested_dict, orient="index").T
    
    # Add the "name" column
    temp_df["name"] = name
    
    # Append the DataFrame to the main DataFrame
    df = df.append(temp_df, ignore_index=True)

print(df)

这段代码的输出结果如下:

    age  gender           city    name
0  25.0    male       New York    Adam
1  30.0    male    Los Angeles     Bob
2  28.0  female  San Francisco   Cathy

可以看到,我们成功地将嵌套字典转成了一张数据表。每个子字典中的值对应数据表中的一列,而每个子字典的键对应数据表中的一行。同时,我们还可以看到,数据表中多了一列 "name",该列记录了每个人的名字。

总结

本文介绍了如何将嵌套字典转成数据表。我们使用了 pandas 库中的 DataFrame() 函数,以及字典和循环等基本的 Python 语法。嵌套字典转数据表是数据处理和分析中经常需要用到的操作,希望本文对读者有所帮助。