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