如何在Pandas中将列转换为行?

时间:2019-05-26 21:31:20

标签: python pandas dataframe row

我有这样的东西:

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

我该怎么办?

3 个答案:

答案 0 :(得分:4)

这是pivotcumcount创建索引

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

这不是一个很好的解决方案,但也许有帮助。 :-)