我有一个看起来像这样的数据框
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的列名称可能会有所不同,我只想要它的格式。
谢谢!
答案 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')