Python - 将嵌套字典列表转换为 Pandas 数据框
多次 Python 会从各种来源接收数据,这些来源可以是 CSV、JSON 等不同格式,可以转换为 Python 列表或字典等。但是若要使用 pandas 等包进行计算或分析,我们需要将此数据转换为数据框。在本文中,我们将了解如何将给定的 Python 列表(其元素是嵌套字典)转换为 pandas 数据框。
我们首先获取嵌套字典列表以及从中提取数据行。然后,我们创建一个另一个循环,将行追加到新列表中,该列表最初是创建为空的。最后,我们应用 pandas 库中的 DataFrames 函数来创建数据框。
示例
import pandas as pd
# Given nested dictionary
list = [
{
"Fruit": [{"Price": 15.2, "Quality": "A"},
{"Price": 19, "Quality": "B"},
{"Price": 17.8, "Quality": "C"},
],
"Name": "Orange"
},
{
"Fruit": [{"Price": 23.2, "Quality": "A"},
{"Price": 28, "Quality": "B"}
],
"Name": "Grapes"
}
]
rows = []
# Getting rows
for data in list:
data_row = data['Fruit']
n = data['Name']
for row in data_row:
row['Name'] = n
rows.append(row)
# Convert to data frame
df = pd.DataFrame(rows)
print(df)
运行以上代码为我们提供以下结果 −
输出
Price Quality Name 0 15.2 A Orange 1 19.0 B Orange 2 17.8 C Orange 3 23.2 A Grapes 4 28.0 B Grapes
应用透视表
我们还可以应用 pivot_table 函数来重新组织数据,以便按我们想要的方式整理。
示例
import pandas as pd
# List of nested dictionary initialization
list = [
{
"Fruit": [{"Price": 15.2, "Quality": "A"},
{"Price": 19, "Quality": "B"},
{"Price": 17.8, "Quality": "C"},
],
"Name": "Orange"
},
{
"Fruit": [{"Price": 23.2, "Quality": "A"},
{"Price": 28, "Quality": "B"}
],
"Name": "Grapes"
}
]
#print(list)
rows = []
# appending rows
for data in list:
data_row = data['Fruit']
n = data['Name']
for row in data_row:
row['Name'] = n
rows.append(row)
# using data frame
df = pd.DataFrame(rows)
df = df.pivot_table(index='Name', columns=['Quality'],
values=['Price']).reset_index()
print(df)运行以上代码为我们提供以下结果 −
输出
Name Price Quality A B C 0 Grapes 23.2 28.0 NaN 1 Orange 15.2 19.0 17.8
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP