Python pandas:创建压缩数据帧

时间:2014-07-23 15:24:16

标签: python pandas

我有一个看起来像这样的数据框

name      time       value1      value2
apple    8:30           17       21
apple    8:35           49       -24 
oranges  8:30           25       -31
orange   8:40           1         3

我想创建一个看起来像这样的数据框

name     8:30-value1   8:30-value2    8:35-value1    8:35-value2      8:40-value1     8:40-value2    
apple      17              21           49            -24              0               0
oranges    25              -31            0             0               1                3

我是熊猫的新手,我怎么能这样做?生成的DF的列名称可能会有所不同,我只想要它的格式。

谢谢!

1 个答案:

答案 0 :(得分:1)

以下答案与您想要的输出略有不同,但我认为您会喜欢它的形式。而不是使用value1,value2找到时间的排列,它使用分层列...

df = df.pivot(index='name',columns='time') 
#df = df.fillna(0) #to replace NaN with 0 as in your output example

<强>输出

         value1              value2
time       8:30  8:35  8:40    8:30  8:35  8:40
name
apple        17    49   NaN      21   -24   NaN
orange      NaN   NaN     1     NaN   NaN     3
oranges      25   NaN   NaN     -31   NaN   NaN

编辑 - 您也可以使用堆栈获得相同的结果

以下基本上是pivot方法所做的事情,以防有人需要做类似但更复杂的事情,比如更多的分层列。

df.set_index(['name','time']).unstack('time')