将多列的行反转为垂直连接的列

2024-04-25 05:55:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框:

Trial      Time  Condition             Status       Q    Operation
 ATAB  09:57:09  HEAT-1255      Jump_starting      34          New
 ATAB  09:57:09  HEAT-7319     Farenheit_Rise       0          New
 ATAB  09:57:09  HEAT-5005    Surface_Celcius       0          New
 ATAB  09:57:09  HEAT-7891      Pressure_Drop       2     Rob_Qn_1
 ATAB  09:57:09  HEAT-1000   Surface_Pressure       0       On_Now
 ATAB  09:58:18  HEAT-1255      Jump_starting      35          New
 ATAB  09:58:18  HEAT-7319     Farenheit_Rise       0          New
 ATAB  09:58:18  HEAT-5005    Surface_Celcius       0          New
 ATAB  09:58:18  HEAT-7891      Pressure_Drop       2     Rob_Qn_1
 ATAB  09:58:18  HEAT-1000   Surface_Pressure       0       On_Now
 ATAB  09:59:16  HEAT-1255      Jump_starting      35          New
 ATAB  09:59:16  HEAT-7319     Farenheit_Rise       0          New
 ATAB  09:59:16  HEAT-5005    Surface_Celcius       0          New
 ATAB  09:59:16  HEAT-7759      Import_Eraser       8   Runing_now
 ATAB  09:59:16  HEAT-7891      Pressure_Drop       2     Rob_Qn_1
 ATAB  09:59:16  HEAT-1000   Surface_Pressure       1       Alb_77
 ATAC  01:29:44  HEAT-5005    Surface_Celcius       0          New
 ATAC  01:29:44  HEAT-7759      Import_Eraser       8   Runing_now
 ATAC  01:29:44  HEAT-7891      Pressure_Drop       2     Rob_Qn_1
 ATAC  01:29:44  HEAT-1000   Surface_Pressure       1       Alb_77
 ATAD  08:49:30  HEAT-7319     Farenheit_Rise       0          New
 ATAD  08:49:30  HEAT-5005    Surface_Celcius       0          New
 ATAD  08:49:30  HEAT-7759      Import_Eraser       8   Runing_now
 ATAD  08:49:30  HEAT-7891      Pressure_Drop       2     Rob_Qn_1
 ATAD  08:49:30  HEAT-1000   Surface_Pressure       1       Alb_77

对于给定的时间,它列出了各种条件、它们的状态和正在执行的操作。各种状态和操作 每次都存在。你知道吗

我试图以这样一种方式旋转数据帧:将Status列的行放到1个标题行上。然后,每一次,我都需要 它们在每个标题下的相应操作。以下是我想要的:

Trial     Time  Jump_starting   Farenheit_Rise  Surface_Celcius Pressure_Drop   Surface_Pressure    Import_Eraser
ATAB  09:57:09             34                0                0             2                  0              N/A
....
....
....

本质上,我需要反转Operation列,同时保持TrialTimeCondition行不变。你知道吗

如何在python2.7中使用Pandas?你知道吗

编辑: 要创建数据帧,请将此文章中的数据帧复制到剪贴板,然后使用以下行:

import pandas as pd
df = pd.read_clipboard()

Tags: 数据newsurfacedroprisestartingrobqn
1条回答
网友
1楼 · 发布于 2024-04-25 05:55:25

我想您可以使用pivot()来实现这一点,但似乎只能指定一列作为索引。因此,我认为使用unstack()是解决这个问题的方法。首先,我们需要设置索引=试验、时间和状态

df[["Trial","Time","Status","Q"]].set_index(["Trial","Time","Status"]).unstack("Status")

给你

                 Q
Status           Farenheit_Rise Import_Eraser Jump_starting Pressure_Drop Surface_Celcius   Surface_Pressure
Trial   Time                        
ATAB    09:57:09 0              NaN            34   etc
        09:58:18 0              NaN            35   ...
        09:59:16 0              8              35   ...
ATAC    01:29:44 NaN            8              NaN  ...
ATAD    08:49:30 0              8              NaN  ...

编辑:得到一些澄清

要在索引中包含条件,只需执行以下操作

df[["Trial","Time","Condition","Status","Q"]].set_index(
                            ["Trial","Time","Condition","Status"]).unstack("Status")

相关问题 更多 >