Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列和行的某些子集的列转换为行?_Python_Pandas_Dataframe - Fatal编程技术网

Python 将列和行的某些子集的列转换为行?

Python 将列和行的某些子集的列转换为行?,python,pandas,dataframe,Python,Pandas,Dataframe,如何使用“我的数据”将行转换为列?我当前的数据集看起来像下面显示的“原始df”,我希望它看起来像“新df2”。需要明确的是,会话1与ADS1和RDS1匹配,因此,会话2对应于ADS2 RDS2 原始df: Name Session1 Session2 Session1t Session2t ADS1 RDS1 ADS2 RDS2 Sam 23.09.2017 24.09.2017 11:00:00 11:00:00

如何使用“我的数据”将行转换为列?我当前的数据集看起来像下面显示的“原始df”,我希望它看起来像“新df2”。需要明确的是,会话1与ADS1和RDS1匹配,因此,会话2对应于ADS2 RDS2

原始df:

Name    Session1    Session2    Session1t    Session2t   ADS1    RDS1    ADS2    RDS2     

Sam     23.09.2017  24.09.2017  11:00:00     11:00:00    3        -9        6        8
Sarah   24.09.2017  27.09.2017  12:00:00     12:00:00    2        Nan       7        8
Steve   23.10.2017  31.10.2017  11:00:00     12:00:00    5         9        7        9
Mark    23.09.2017              11:00:00                 0         3        
James   23.09.2017  26.09.2017               11:00:00    4         7        1        4
新df:

Name    Sessions        Sessiontimes      ADS       RDS

Sam     23.09.2017      11:00:00           3       -9
Sam     24.09.2017      11:00:00           6        8
Sarah   24.09.2017      12:00:00           2        NaN
Sarah   27.09.2017      12:00:00           7        8
Steve   23.10.2017      11:00:00           5        9
Steve   31.10.2017      12:00:00           7        9
Mark    23.09.2017      11:00:00           0        3
James   23.09.2017                         4        7
James   26.09.2017      11:00:00           1        4

这是一个非常适合
从宽到长
的场景。但是,您应该首先更改存储会话时间的方式,以便它们更容易相互匹配,并且不会与其他
会话
系列冲突



我的输出与此不符??相反,每个会话、会话时间、ADS都有自己的行吗?因此,第一行数据从左向右成对角线移动?
df.columns = df.columns.str.replace(r'Session(\d+)t', r'Time\1')

pd.wide_to_long(
  df, stubnames=['Session', 'Time', 'ADS', 'RDS'], i='Name', j='ID'
).dropna()
             Session      Time  ADS  RDS
Name  ID
Sam   1   23.09.2017  11:00:00  3.0   -9
Sarah 1   24.09.2017  12:00:00  2.0  Nan
Steve 1   23.10.2017  11:00:00  5.0    9
Mark  1   23.09.2017  11:00:00  0.0    3
Sam   2   24.09.2017  11:00:00  6.0    8
Sarah 2   27.09.2017  12:00:00  7.0    8
Steve 2   31.10.2017  12:00:00  7.0    9
James 2   26.09.2017  11:00:00  1.0    4