📅  最后修改于: 2023-12-03 14:53:57.439000             🧑  作者: Mango
Pandas 是 Python 中用于数据处理的一个常用库,它可以方便地进行数据清洗、转换和分析。在 Pandas 中,我们经常会处理一些复杂的数据结构,比如嵌套的字典。在处理这些字典时,我们可能需要将它们展开为 Pandas DataFrame 表格,以便更加方便地进行分析。
本文将介绍如何使用 Pandas 将嵌套字典展开为 DataFrame。我们将通过一个实际的例子来介绍展开字典的过程。
我们先来看一个示例字典,它包含了若干个学生的个人信息和课程信息,其中课程信息是嵌套在个人信息中的:
students = [
{
'name': 'Alice',
'age': 20,
'courses': [
{'name': 'Math', 'score': 90},
{'name': 'Science', 'score': 80}
]
},
{
'name': 'Bob',
'age': 21,
'courses': [
{'name': 'Math', 'score': 85},
{'name': 'Science', 'score': 95},
{'name': 'English', 'score': 90}
]
},
{
'name': 'Charlie',
'age': 22,
'courses': [
{'name': 'Math', 'score': 70},
{'name': 'English', 'score': 80}
]
}
]
我们的目标是将上面的字典展开为一个 Pandas DataFrame 表格,其中每一行表示一个学生和一门课程,包含学生的个人信息和该门课程的信息,如下所示:
name age course_name score
0 Alice 20 Math 90
1 Alice 20 Science 80
2 Bob 21 Math 85
3 Bob 21 Science 95
4 Bob 21 English 90
5 Joe 22 Math 70
6 Joe 22 English 80
为了将上述示例字典展开为 Pandas DataFrame,我们需要首先理解如何处理嵌套字典。通常情况下,我们可以使用嵌套循环来遍历所有的键值对。在本例中,我们可以使用两个嵌套的 for
循环,分别遍历每个学生和该学生所上的课程:
data = []
for student in students:
name = student['name']
age = student['age']
for course in student['courses']:
course_name = course['name']
score = course['score']
data.append([name, age, course_name, score])
在上面的代码中,我们创建了一个空列表 data
来存储处理后的数据。在内层循环中,我们提取了学生的名字和年龄、课程的名字和分数,并将它们作为一行数据添加到 data
列表中。
接着,我们可以将 data
列表转换为 Pandas DataFrame,如下所示:
import pandas as pd
columns = ['name', 'age', 'course_name', 'score']
df = pd.DataFrame(data, columns=columns)
在上面的代码中,我们首先创建了一个列名列表 columns
,其中包含了需要展现的数据列。接着,我们使用 pd.DataFrame()
函数将 data
列表转换为了 Pandas DataFrame,并指定 columns
参数来设置列名。
最后,我们可以打印出 DataFrame 表格,如下所示:
print(df)
打印结果如下:
name age course_name score
0 Alice 20 Math 90
1 Alice 20 Science 80
2 Bob 21 Math 85
3 Bob 21 Science 95
4 Bob 21 English 90
5 Charlie 22 Math 70
6 Charlie 22 English 80
在本文中,我们介绍了如何使用 Pandas 将嵌套字典展开为 Pandas DataFrame 表格,并通过一个实际的例子演示了展开字典的过程。展开嵌套字典是一个常见的数据处理步骤,特别是在处理复杂的数据结构时。通过本文的介绍,相信读者能够掌握如何使用 Pandas 进行展开字典的操作,以便更加高效地处理和分析数据。