我有这样的东西:
Values Time
22 0
45 1
65 2
78 0
12 1
45 2
我想要这个:
Time 0 1 2
Val1 22 45 65
Val2 78 12 45
我该怎么办?
答案 0 :(得分:4)
这是pivot
用cumcount
创建索引
df['idx'] = 'Val' + (df.groupby('Time').cumcount()+1).astype(str)
df.pivot(index='idx', columns='Time', values='Values').rename_axis(None)
输出:
Time 0 1 2
Val1 22 45 65
Val2 78 12 45
答案 1 :(得分:1)
您需要转置数组/矩阵。
使用
list(map(list, zip(*l)))
列表是您的列表
答案 2 :(得分:1)
如果您的时间增量是恒定的,有序的并且没有缺失值:
DELTA = 3
new_values = [df['Values'].iloc[i*DELTA:i*DELTA+DELTA].values.transpose() for i in range(int(len(df)/DELTA))]
df_new = pd.DataFrame(new_values , index=['Val'+str(i+1) for i in range(len(new_values ))])
print(df_new)
0 1 2
Val1 22 45 65
Val2 78 12 45
这不是一个很好的解决方案,但也许有帮助。 :-)