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

将嵌套的字典列表转换成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日

相关文章

  • Pandas数据集的分块读取的实现

    Pandas是一个强大的数据处理工具,它支持读取大型文件并进行高效处理和分析。然而,当读取大型数据集时,Pandas在可用内存有限的情况下可能会面临内存溢出的问题。为了解决这个问题,Pandas提供了一种分块读取数据集的方法,可以将数据集拆分成多个较小的块,并逐块进行处理。下面是使用Pandas进行数据集分块读取的完整攻略: 1. 确定分块大小 在进行数据集…

    python 2023年5月14日
    00
  • 分享一下Python数据分析常用的8款工具

    分享Python数据分析常用的8款工具 Python作为一门高效易学的编程语言,深受数据分析领域的青睐。本文将分享一下Python数据分析常用的8款工具,帮助大家更好地进行数据分析。 1. Jupyter Notebook Jupyter Notebook是一款基于Web的交互式计算环境,支持多种编程语言,最常用的是Python。它的优点在于可视化输出展示、…

    python 2023年5月14日
    00
  • 如何将TSV文件加载到Pandas DataFrame中

    加载TSV(Tab Separated Values,以制表符分隔的值)文件到Pandas DataFrame中的过程十分简单。下面是完整的攻略: 导入需要的库 在加载TSV文件之前,需要先导入需要的库,包括pandas库和numpy库。可以使用以下代码进行导入: import pandas as pd import numpy as np 读取TSV文件 …

    python-answer 2023年3月27日
    00
  • 在Pandas中把一系列的列表转换为一个系列

    在Pandas中,将一系列的列表转换为一个系列主要可以通过Series类的构造函数实现。Series类是Pandas中最常用的数据结构之一,它有三个主要的构造函数:Series(data, index, dtype),其中参数data表示要创建的Series数据,可以是一个列表、字典或NumPy数组等;参数index为Series数据的索引,即Series的…

    python-answer 2023年3月27日
    00
  • C#实现Excel动态生成PivotTable

    C#实现Excel动态生成PivotTable的完整攻略 动态生成PivotTable,其实就是利用C#程序将数据导入Excel表格中的PivotTable,并且使得PivotTable自动更新,并支持动态增加或删除数据。下面就是实现这个功能的完整攻略: 1. 创建Excel文件并设置PivotTable数据源 首先,需要在C#中安装对Excel操作的支持,…

    python 2023年6月14日
    00
  • 对pandas读取中文unicode的csv和添加行标题的方法详解

    以下是关于”对pandas读取中文unicode的csv和添加行标题的方法详解”的完整攻略。 读取中文unicode的csv文件 读取中文unicode的csv文件时,需要确保文件编码是UTF-8,使用pandas中的read_csv()函数读取需要指定encoding参数为’utf-8’。 import pandas as pd # 读取csv文件,使用u…

    python 2023年6月13日
    00
  • 替换Pandas数据框架中的字符串中的字符

    要替换 Pandas 数据框架中字符串中的字符,可以使用 str.replace() 方法。下面是完整攻略及示例: 步骤 1:准备数据 首先,我们需要准备一些待处理的数据。这里我们使用一个包含两列的数据框架,其中一列包含了部分数据。 import pandas as pd data = { ‘A’: [‘foo’, ‘bar’, ‘baz’, ‘qux’, …

    python-answer 2023年3月27日
    00
  • 使用pandas和matplotlib 进行绘图

    下面是使用pandas和matplotlib进行绘图的完整攻略,我将演示如何在Jupyter Notebook中使用Python3中的pandas和matplotlib库绘制数据可视化图表。 第一步:导入必要的库 import pandas as pd import matplotlib.pyplot as plt %matplotlib inline 以上…

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