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数据框架中删除特定的行,可以使用drop()方法。下面是详细的步骤和实例说明: 确定要删除的行的索引。 使用drop()方法,将要删除的索引传递给该方法,指定axis参数为0,表示删除行。 如果是多索引DataFrame,需要指定要删除的行在哪一级索引上。 下面通过一个实例来演示如何从多索引Pandas数据框架中删除特定的行。假设我们…

    python-answer 2023年3月27日
    00
  • 使用Pandas选择包含特定文本的行

    使用 Pandas 选择包含特定文本的行,可以通过以下几个步骤实现: 1.导入 Pandas 库并读取数据 首先需要导入 Pandas 库并读取需要处理的数据文件,如下所示: import pandas as pd # 读取数据文件 df = pd.read_csv("data.csv") 2.使用 Pandas 中的 str 方法 Pa…

    python-answer 2023年3月27日
    00
  • 用Python Seaborn进行数据可视化

    是的,Python Seaborn是一个用于数据可视化的流行Python库。它提供了高级界面和内置的工具来创建各种类型的统计图表和图形。 下面详细介绍如何使用Python Seaborn进行数据可视化: 安装Seaborn 首先需要在你的计算机上安装Seaborn库。使用以下命令进行安装: pip install seaborn 创建数据集 在开始可视化之前…

    python-answer 2023年3月27日
    00
  • 连接Pandas数据帧,无重复的数据帧

    连接Pandas数据帧和处理无重复数据帧是使用Pandas进行数据处理的常见任务之一。下面是一个完整的攻略,涵盖了连接不同数据帧,删除复制数据等方面。 连接Pandas数据帧 连接Pandas数据帧通常使用以下三个方法: Concatenate(串联) concatenate方法可以将两个或多个数据帧按行或列进行连接。 行连接 concatenate方法的默…

    python-answer 2023年3月27日
    00
  • 利用pandas读取中文数据集的方法

    下面是利用 pandas 读取中文数据集的详细攻略,分为以下几个步骤: 步骤一:安装 pandas Pandas 是一款 Python 的数据分析库,支持大多数数据格式的导入、展示和处理,具有方便快捷、高效性的特点。 在命令行中输入以下命令,即可安装 pandas: pip install pandas 如果出现权限问题,可以在命令前加上“sudo”。 或者…

    python 2023年5月14日
    00
  • 一文搞懂Python中Pandas数据合并

    我来为你详细讲解一下Python中Pandas数据合并的攻略。 1. 简介 Pandas是一个Python第三方库,提供了一种高效、便捷的数据处理工具,常用于数据清洗、分析和可视化。数据合并是数据处理过程中的常见操作之一,Pandas提供了多种数据合并手段,具体如下: concat:可以将两个或多个DataFrame对象进行简单的连接操作; merge:可以…

    python 2023年5月14日
    00
  • 从一个给定的Pandas数据框架中移除无限的值

    移除数据框中的无限值非常重要,因为这些值会干扰我们的统计计算和可视化结果。一些无限值包括正无穷、负无穷、NaN等。 在Pandas中,我们可以使用方法dropna()来移除存在NaN值的行或列,但默认情况下它不会移除无限大或无限小的值。因此,我们需要使用replace()方法将这些无限大或无限小的值替换成NaN,然后使用dropna()方法移除这些NaN值。…

    python-answer 2023年3月27日
    00
  • pandas.read_csv参数详解(小结)

    下面是对于“pandas.read_csv参数详解(小结)” 的详细攻略: pandas.read_csv参数详解 基本参数 pandas.read_csv(file_path: str, delimiter: str, header: Union[int, List[int]], names: Optional[List[str]], index_col:…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部