将一列转置为多列

将一列转置为多列

我有一个如下数据框:

df = pd.DataFrame({'month':['2017-09-27','2017-09-27','2017-09-28','2017-09-29'],'Cost':[100,500,200,300]})


我如何获得这样的df:

2017-09-27   2017-09-28    2017-09-29
  100            200          300
  500            NULL         NULL


提前致谢!

最佳答案

使用cumcount计算items within each group的“累积计数”。我们将使用这些值(如下)作为索引标签。

In [97]: df['index'] = df.groupby('month').cumcount()

In [98]: df
Out[98]:
   Cost       month  index
0   100  2017-09-27      0
1   500  2017-09-27      1
2   200  2017-09-28      0
3   300  2017-09-29      0


然后可以通过pivoting获得所需的结果:

In [99]: df.pivot(index='index', columns='month', values='Cost')
Out[99]:
month  2017-09-27  2017-09-28  2017-09-29
index
0           100.0       200.0       300.0
1           500.0         NaN         NaN

关于python-3.x - Python DataFrame:将一列转置为多列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46457655/

10-11 06:21