Python 将嵌套的字典列表转换成Pandas数据框架

yizhihongxing

将嵌套的字典列表转换成Pandas数据框架是Pandas中常用的数据预处理技巧之一。下面是详细的攻略:

准备数据

先准备一个嵌套的字典列表,例如:

data = [
    {
        'name': 'Alice',
        'age': 25,
        'skills': ['Python', 'Java', 'SQL'],
        'contact': {
            'email': 'alice@example.com',
            'phone': '1234567890'
        }
    },
    {
        'name': 'Bob',
        'age': 30,
        'skills': ['Python', 'C++'],
        'contact': {
            'email': 'bob@example.com',
            'phone': '0987654321'
        }
    }
]

这是一个包含两个字典的列表,每个字典都包含nameageskillscontact四个属性。

转换为数据框架

接下来,我们需要把这个嵌套的字典列表转换成Pandas数据框架。可以使用pd.DataFrame函数来完成转换:

import pandas as pd

df = pd.DataFrame(data)

这样,data就被成功地转换成了一个Pandas数据框架。下面是转换后的数据框架:

    name  age            skills                    contact
0  Alice   25  [Python, Java, SQL]  {'email': 'alice@example.com', 'phone': '1234567890'}
1    Bob   30        [Python, C++]    {'email': 'bob@example.com', 'phone': '0987654321'}

其中,每个字典的一个键被转换为了数据框架的一个列,每个字典的一个值被转换成了数据框架中的一行。

但是,我们可以发现,skillscontact两列的值还是一个嵌套的数据结构,不方便进一步的数据分析和处理。因此,我们需要进行下一步的操作。

展开嵌套的数据结构

为了方便后续的数据处理,我们需要将嵌套的数据结构展开成新的列。下面分别对skillscontact两个嵌套的数据结构进行展开。

展开skills

skills是一个字符串列表,我们可以使用apply(pd.Series)函数将其展开成新的列:

skills_df = df['skills'].apply(pd.Series)
skills_df.columns = ['skill_1', 'skill_2', 'skill_3']

这样,skills列就被转换成了三个新的列skill_1skill_2skill_3,包含了每个人的三种技能。

展开contact

contact是一个字典,我们需要将其展开成两个新的列。可以使用apply(pd.Series)函数将其展开,再与原来的数据框架合并:

contact_df = df['contact'].apply(pd.Series)
contact_df.columns = ['contact_email', 'contact_phone']

df = pd.concat([df, skills_df, contact_df], axis=1)
df = df.drop(['skills', 'contact'], axis=1)

这样,contact列就被转换成了两个新的列contact_emailcontact_phone

完整代码

下面是完整的Python代码:

import pandas as pd

data = [
    {
        'name': 'Alice',
        'age': 25,
        'skills': ['Python', 'Java', 'SQL'],
        'contact': {
            'email': 'alice@example.com',
            'phone': '1234567890'
        }
    },
    {
        'name': 'Bob',
        'age': 30,
        'skills': ['Python', 'C++'],
        'contact': {
            'email': 'bob@example.com',
            'phone': '0987654321'
        }
    }
]

df = pd.DataFrame(data)
skills_df = df['skills'].apply(pd.Series)
skills_df.columns = ['skill_1', 'skill_2', 'skill_3']

contact_df = df['contact'].apply(pd.Series)
contact_df.columns = ['contact_email', 'contact_phone']

df = pd.concat([df, skills_df, contact_df], axis=1)
df = df.drop(['skills', 'contact'], axis=1)

print(df)

输出结果如下:

    name  age  skill_1 skill_2 skill_3      contact_email contact_phone
0  Alice   25   Python    Java     SQL  alice@example.com    1234567890
1    Bob   30   Python     C++    None    bob@example.com    0987654321

可以看到,skillscontact两个嵌套的数据结构已经被成功展开成了新的列,数据得到了进一步的清理和预处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 将嵌套的字典列表转换成Pandas数据框架 - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • 使用SQLAlchemy将SQL数据库表读入Pandas DataFrame中

    使用SQLAlchemy将SQL数据库表读入Pandas DataFrame中主要分为以下三个步骤: 连接数据库 使用SQLAlchemy与数据库建立连接,获取数据库引擎。以MySQL为例,需要安装PyMySQL模块并进行相应的配置。代码示例如下: import sqlalchemy from sqlalchemy import create_engine …

    python-answer 2023年3月27日
    00
  • Pandas GroupBy 用法

    下面是关于 Pandas GroupBy 的用法完整攻略和实例说明。 简介 Pandas 是一个基于 NumPy 的库,用于数据操作和数据分析。其中,GroupBy 是一种数据聚合/分组操作,用于将数据集按照某些条件分组,并对各组进行操作。GroupBy 分组操作涉及到三个步骤:分组、应用、合并。具体来说,就是: 将数据集按照某些条件分组; 对各组应用一个函…

    python-answer 2023年3月27日
    00
  • 在Pandas中应用LEFT, RIGHT, MID的方法

    在Pandas中,可以使用Series.str方法结合LEFT、RIGHT和MID函数来提取字符串中的部分信息,例如提取姓名、数字等等。 首先,LEFT函数可以提取字符串的左侧若干个字符,其语法为LEFT(string, num_chars),其中string为待提取的字符串,num_chars为提取的字符数。例如: import pandas as pd …

    python-answer 2023年3月27日
    00
  • 在pycharm中无法import所安装的库解决方案

    当使用PyCharm编写Python代码时,有时候会遇到无法导入(import)已安装的库的情况。这时候可以尝试以下几个解决方案。 1. 检查Python解释器 首先,确保正在使用正确的Python解释器。PyCharm支持在同一项目中同时使用多种Python解释器,但如果使用错误的解释器,则可能无法导入所需的库。可以通过以下步骤检查和更改Python解释器…

    python 2023年5月14日
    00
  • 解决pandas使用read_csv()读取文件遇到的问题

    当使用Pandas的read_csv()函数读取CSV格式文件时,可能会遇到一些常见的问题,如编码问题、分隔符问题、缺失值问题等。下面将针对这些问题提供解决方案。 问题一:编码问题 如果CSV文件编码与你当前使用的Python解释器编码不同,就会出现编码问题。这时可使用read_csv()函数的encoding参数指定正确的编码格式。例如,CSV文件的编码为…

    python 2023年5月14日
    00
  • 如何将Pandas数据帧转换为列表

    将Pandas数据帧(DataFrame)转换为列表(List)是常见的数据处理操作。下面是转换的完整攻略: 导入必要的库 需要导入Pandas库,以及Python内置的列表(List)库。 import pandas as pd 创建一个Pandas数据帧 为了演示转换过程,首先需要创建一个Pandas数据帧。这里以一个包含学生姓名、学号、语文成绩、数学成…

    python-answer 2023年3月27日
    00
  • python 如何设置柱状图参数

    下面是关于 Python 中设置柱状图参数的完整攻略: 1. 导入需要的库 在使用任何 Python 库前,我们都需要先导入它们。对于绘制柱状图,我们需要导入 matplotlib 库。 import matplotlib.pyplot as plt 2. 准备数据 在绘制柱状图前,我们需要准备好要绘制的数据。以一个地区的温度为例: region = [‘B…

    python 2023年6月14日
    00
  • 在Python中把 CSV 文件读成一个列表

    在 Python 中,我们可以使用内置的 csv 模块来读取 CSV 文件。csv 模块提供了一种读取和写入 CSV 文件的方便方法,并且可以自动将 CSV 文件中的每一行转换为列表。 下面是将 CSV 文件读取为一个列表的步骤: 导入 csv 模块 import csv 打开 CSV 文件 with open(‘filename.csv’, ‘r’) as…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部