pandas.DataFrame的pivot()和unstack()实现行转列

当我们在pandas中处理表格数据时,经常需要进行行列互换的操作,以更方便地对数据进行分析和处理。在这种情况下,可以使用pivot方法和unstack方法对数据进行行列转换。

1. pivot方法

pivot方法可以将某一列作为索引,将另一列作为列名,并将第三列的值填充到相应的单元格中。下面是使用pivot方法进行行列转换的示例:

import pandas as pd
data = [['John', 'Math', 85], ['Tom', 'Math', 75], ['Kate', 'Math', 90], ['John', 'English', 70], ['Tom', 'English', 80], ['Kate', 'English', 95]]
df = pd.DataFrame(data, columns=['Name', 'Subject', 'Score'])
print('原始数据:')
print(df)
print('*' * 50)
table = pd.pivot(data=df, index='Name', columns='Subject', values='Score')
print('转换后的数据:')
print(table)

执行结果如下:

原始数据:
   Name  Subject  Score
0  John     Math     85
1   Tom     Math     75
2  Kate     Math     90
3  John  English     70
4   Tom  English     80
5  Kate  English     95
**************************************************
转换后的数据:
Subject  English  Math
Name
John           70    85
Kate           95    90
Tom            80    75

在上面的示例中,我们首先创建了一个包含学生姓名、科目和成绩的数据表,然后使用pivot方法将原始数据中的姓名列作为索引,科目列作为列名,成绩列作为填充到相应单元格中的值,最终得到了一份以学生为行、科目为列、成绩为值的新表格。

需要注意的是,在pivot方法中,index参数指定了要作为新表格的行索引的列,columns参数指定了要作为新表格的列索引的列,而values参数则指定了要填充到新表格中的值的列。

2. unstack方法

unstack方法可以将表格中一个层次的行或列索引转换为列或行。下面是使用unstack方法进行行列转换的示例:

import pandas as pd

df = pd.read_csv('data.csv', index_col=[0,1])

print('原始数据:')
print(df)
print('*' * 50)

table = df.unstack(level=-1)
print('转换后的数据:')
print(table)

执行结果如下:

原始数据:
                   Value1    Value2
TimeStamp Person
2021-01-01 John        10        20
           Kate        15        25
2021-01-02 John        12        22
           Kate        18        28
**************************************************
转换后的数据:
         Value1       Value2
Person     John Kate  John Kate
TimeStamp
2021-01-01    10   15    20   25
2021-01-02    12   18    22   28

在上面的示例中,我们首先读入包含时间戳、人名和两个数值的数据表,然后使用set_index方法将两个列设为行索引,最后使用unstack方法将行索引中的第二层层次结构转换为列索引,最终得到了一份以时间戳为行、人名为列、数值为值的新表格。

需要注意的是,在unstack方法中,level参数指定要转换的索引层数,默认为-1。如果当前索引有多个层次,则需要指定要转换的层次。转换后,原来的层次结构就被转换为了新表格中的列索引或行索引。

通过pivot方法和unstack方法,我们可以非常方便地对表格数据进行行列转换。在实际的数据处理工作中,这两个方法经常被用来分析和处理数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas.DataFrame的pivot()和unstack()实现行转列 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 如何用pandas处理hdf5文件

    下面是详细讲解如何用pandas处理hdf5文件的完整攻略: 什么是HDF5文件 HDF5文件是一种具有高度可扩展性和可移植性的数据格式,通常用于存储和管理大量结构化数据。HDF5文件包含一个层次结构,其中可以存储多个数据集,并且数据集可以具有任意数量的轴。 如何使用pandas处理HDF5文件 Pandas提供了许多函数,可用于读取和写入HDF5文件。下面…

    python 2023年5月14日
    00
  • Python程序流程控制实验

    首先,我们来介绍一下Python程序流程控制实验的基本概念。 编程中的程序流程控制是指控制程序的执行顺序,使程序按照一定的逻辑顺序执行。Python中的程序流程控制可以通过条件语句、循环语句和函数等实现。 在进行Python程序流程控制实验时,我们需要掌握以下几个方面的内容: 条件语句 条件语句可以通过判断条件是否成立来执行相应的代码块。在Python中,条…

    python 2023年5月14日
    00
  • 如何将多个CSV文件合并到一个Pandas数据框中

    将多个CSV文件合并到一个Pandas数据框中,需要用到Pandas的concat函数和read_csv函数。 读取CSV文件并存储为Pandas数据框 我们首先需要读取多个CSV文件,可以使用Pandas的read_csv函数。例如,我们有三个文件file1.csv、file2.csv、file3.csv,我们可以使用如下代码读入这三个文件,并存储为三个P…

    python-answer 2023年3月27日
    00
  • python递归查询菜单并转换成json实例

    对于这个问题,我们来逐步分析。 一、递归查询菜单 假设我们有如下的菜单数据: [ {"id": 1, "name": "菜单1", "parent_id": None}, {"id": 2, "name": "菜单2",…

    python 2023年5月14日
    00
  • 在Pandas Dataframe中,将一系列的日期字符串转换为时间序列

    将一系列的日期字符串转换为时间序列的步骤如下: 读取数据:首先需要从数据来源中读取数据。使用pandas库中的read_csv()函数读取csv文件,read_excel()函数读取excel文件,read_sql()函数读取数据库中的数据等。 例如,我们从csv文件中读取日期字符串数据。 import pandas as pd df = pd.read_c…

    python-answer 2023年3月27日
    00
  • python 读取以空格分开的文件操作

    让我来为您详细介绍一下Python读取以空格分开的文件操作。 文件读取 Python内置了读写文件的功能。读取文件时,需要使用open()函数打开一个文件,接着使用read()或readline()方法读取文件内容,最后使用close()方法关闭文件。下面是一个读取文件的示例代码: with open(‘file.txt’, ‘r’) as f: data …

    python 2023年6月13日
    00
  • 如何在Python中使用Pandas绘制安德鲁斯曲线

    下面是详细的讲解如何在Python中使用Pandas绘制安德鲁斯曲线的完整攻略。 一、安德鲁斯曲线介绍安德鲁斯曲线是一种用于可视化数据集多元变量分布的方法,具体来说就是将多元变量的值用特定的方式映射到二维平面上。在安德鲁斯曲线中,每个变量都被表示为一个三角函数(以下简称sin/cos),通过将每个变量的sin/cos系数线性组合得到一个新的函数,最终将这个函…

    python-answer 2023年3月27日
    00
  • 如何在Python-Pandas中从字典中创建DataFrame

    在Python-Pandas中,可以从字典中创建DataFrame,以下是完整攻略和实例说明: Step 1:导入Pandas模块 在创建DataFrame之前,需要先导入Pandas模块。可以使用以下语句导入Pandas模块: import pandas as pd Step 2:从字典中创建DataFrame 可以使用Pandas中的DataFrame(…

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