使用熊猫将数据帧从长到宽转换-单行输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用熊猫将数据帧从长到宽转换-单行输出相关的知识,希望对你有一定的参考价值。

我有一个如下所示的数据框

df = pd.DataFrame(
'subject_id':[1,1,1,1,2,2,2,2],
'date':['2173/04/11','2173/04/12','2173/04/11','2173/04/12','2173/05/14','2173/05/15','2173/05/14','2173/05/15'],
'time_1':['2173/04/11 12:35:00','2173/04/12 12:50:00','2173/04/11 12:59:00','2173/04/12 13:14:00','2173/05/14 13:37:00','2173/05/15 13:39:00','2173/05/14 18:37:00','2173/05/15 19:39:00'],
 'val' :[5,5,40,40,7,7,38,38],
 'iid' :[12,12,12,12,21,21,21,21]   
 )
df['time_1'] = pd.to_datetime(df['time_1'])
df['day'] = df['time_1'].dt.day

我尝试使用stack,unstack,pivot and melt方法,但似乎没有帮助

pd.melt(df, id_vars =['subject_id','val'], value_vars =['date','val']) #1

df.unstack().reset_index()  #2

df.pivot(index='subject_id', columns='time_1', values='val')  #3 

我希望我的输出数据帧看起来如下图所示

enter image description here

更新的屏幕截图

enter image description here

enter image description here

答案

[想法是通过GroupBy.cumcount创建帮助器系列,具有用于新索引的相同列/列-在这里GroupBy.cumcount,创建subject_id,通过MultiIndex整形并最后展平DataFrame.unstack

DataFrame.unstack

以上是关于使用熊猫将数据帧从长到宽转换-单行输出的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中使用多个观察值从长到宽转换

athena presto - 从长到宽的多列

从长数据帧到宽数组的快速转换

tidyR 从长到宽的数据?

从长到宽重塑并创建具有二进制值的列

将数据帧从长转换为宽,同时保留值的顺序(dtype datetime)