将 Pandas DataFrame 转换为字典 您所在的位置:网站首页 把列表转换为字典 将 Pandas DataFrame 转换为字典

将 Pandas DataFrame 转换为字典

2024-04-30 07:36| 来源: 网络整理| 查看: 265

使用 to_dict() 函数将 Pandas DataFrame 转换为字典 Pandas DataFrame 转换字典的方法 Pandas DataFrame 转换为字典列表 Pandas DataFrame 按行转为字典 Dataframe 转为以一列为键的字典 使用 dict() 和 zip() 函数将 Pandas DataFrame 转为字典

本教程将介绍如何将 Pandas DataFrame 转换为以索引列元素为键,其他列的相应元素为值的字典。我们将在文章中使用以下 DataFrame。

import pandas as pd df = pd.DataFrame( [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]], columns=["Name", "Age", "Course"], ) print(df)

输出:

Name Age Course 0 Jay 16 BBA 1 Jack 19 BTech 2 Mark 18 BSc 使用 to_dict() 函数将 Pandas DataFrame 转换为字典

Pandas to_dict() 函数将一个 DataFrame 转换为一个字典。参数决定了字典的格式和键值对的关联方式。下面是一个使用 to_dict() 将 DataFrame 转换为 Dictionary 的基本示例。

import pandas as pd df = pd.DataFrame( [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]], columns=["Name", "Age", "Course"], ) d1 = df.to_dict() print(d1)

输出:

{'Name': {0: 'Jay', 1: 'Jack', 2: 'Mark'}, 'Age': {0: 16, 1: 19, 2: 18}, 'Course': {0: 'BBA', 1: 'BTech', 2: 'BSc'}}

正如你在输出中看到的,列名被转换为键,每条记录作为值,索引作为它们的键。

Pandas DataFrame 转换字典的方法

我们可以通过参数 list、records、series、index、split 和 dict 来改变最终字典的格式。例如,当我们传递 list 和 series 作为参数时,我们将列名作为键,但值对分别被转换为列表和系列行。下面的例子将证明这一点。

import pandas as pd df = pd.DataFrame( [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]], columns=["Name", "Age", "Course"], ) d_list = df.to_dict("list") print(d_list) d_series = df.to_dict("series") print(d_series)

输出:

{'Name': ['Jay', 'Jack', 'Mark'], 'Age': [16, 19, 18], 'Course': ['BBA', 'BTech', 'BSc']} {'Name': 0 Jay 1 Jack 2 Mark Name: Name, dtype: object, 'Age': 0 16 1 19 2 18 Name: Age, dtype: int64, 'Course': 0 BBA 1 BTech 2 BSc Name: Course, dtype: object} Pandas DataFrame 转换为字典列表

我们也可以将每一行作为一个单独的字典传递给函数 records。最后的结果是一个列表,每一行都是一个字典。例如:

import pandas as pd df = pd.DataFrame( [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]], columns=["Name", "Age", "Course"], ) d_records = df.to_dict("records") print(d_records)

输出:

[{'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}] Pandas DataFrame 按行转为字典

但是在很多情况下,我们可能不希望列名作为字典的键。对于这种情况,我们可以传递 index 来使 DataFrame 索引作为键。下面的代码片段展示了这一点。

import pandas as pd df = pd.DataFrame( [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]], columns=["Name", "Age", "Course"], ) d_index = df.to_dict("index") print(d_index)

输出:

{0: {'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, 1: {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, 2: {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}} Dataframe 转为以一列为键的字典

但是,如果我们喜欢用一列的元素作为键,而用其他列的元素作为值呢?这可以通过简单地将所需的列作为 DataFrame 的索引,并使用 .T() 函数对其进行转置来实现。

例子:

import pandas as pd df = pd.DataFrame( [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]], columns=["Name", "Age", "Course"], ) d_names = df.set_index("Name").T.to_dict("list") print(d_names)

输出:

{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']} 使用 dict() 和 zip() 函数将 Pandas DataFrame 转为字典

Python dict() 函数也可以将 Pandas DataFrame 转换为字典。我们还应该使用 zip() 函数,将各个列作为它的参数来创建并行迭代器。然后 zip() 函数将在每次迭代中产生一行的所有值。

import pandas as pd df = pd.DataFrame( [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]], columns=["Name", "Age", "Course"], ) d = dict([(i, [a, b]) for i, a, b in zip(df["Name"], df["Age"], df["Course"])]) print(d)

输出:

{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有