Python DataFrame 转 Dict

介绍

在数据分析和处理过程中,Python的pandas库是一个非常强大和常用的工具。其中的DataFrame是一种二维表格数据结构,类似于Excel中的表格。在实际应用中,我们可能需要将DataFrame数据转换为字典(dict)格式,以便于后续处理或与其他数据结构进行交互。本文将介绍如何使用Python将DataFrame转换为字典,以及一些常用的方法和技巧。

环境准备

在开始之前,我们需要安装pandas库。可以使用以下命令在Python环境中安装pandas库:

pip install pandas

接下来,我们导入pandas库并创建一个DataFrame对象用于示例:

import pandas as pd

# 创建DataFrame对象
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
print(df)

输出结果为:

      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago
3    David   40      Houston

方法一:使用to_dict()方法

pandas中的DataFrame对象提供了to_dict()方法,可以直接将DataFrame转换为字典。to_dict()方法接受一个参数orient,用于指定字典的格式。常用的格式包括'dict'(默认值)、'list'、'series'和'split'。我们将分别介绍每种格式的转换结果。

转换为字典格式('dict')

将DataFrame转换为字典格式时,每列的列名作为字典的键,每列的数据作为字典的值。示例代码如下:

# 使用to_dict()方法将DataFrame转换为字典格式
dict_format = df.to_dict(orient='dict')
print(dict_format)

输出结果为:

{'Name': {0: 'Alice', 1: 'Bob', 2: 'Charlie', 3: 'David'},
 'Age': {0: 25, 1: 30, 2: 35, 3: 40},
 'City': {0: 'New York', 1: 'Los Angeles', 2: 'Chicago', 3: 'Houston'}}

转换为列表格式('list')

将DataFrame转换为列表格式时,每行的数据作为列表的元素,列名作为列表的键。示例代码如下:

# 使用to_dict()方法将DataFrame转换为列表格式
list_format = df.to_dict(orient='list')
print(list_format)

输出结果为:

{'Name': ['Alice', 'Bob', 'Charlie', 'David'],
 'Age': [25, 30, 35, 40],
 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}

转换为Series格式('series')

将DataFrame转换为Series格式时,每列的数据作为一个Series对象,列名作为Series对象的名称。示例代码如下:

# 使用to_dict()方法将DataFrame转换为Series格式
series_format = df.to_dict(orient='series')
print(series_format)

输出结果为:

{'Name': 0      Alice
          1        Bob
          2    Charlie
          3      David
          Name: Name, dtype: object,
 'Age': 0    25
         1    30
         2    35
         3    40
         Name: Age, dtype: int64,
 'City': 0       New York
          1    Los Angeles
          2        Chicago
          3        Houston
          Name: City, dtype: object}

转换为分割格式('split')

将DataFrame转换为分割格式时,每列的数据作为一个字典对象,键为原始列名,值为原始数据。示例代码如下:

# 使用to_dict()方法将DataFrame转换为分割格式
split_format = df.to_dict(orient='split')
print(split_format)

输出结果为:

{'index': [0, 1, 2, 3],
 'columns': ['Name', 'Age', 'City'],
 'data': [['Alice', 25, 'New York'],