将大熊猫中的长圆柱排列成多个短圆柱

时间:2018-11-26 23:21:59

标签: python pandas

我有一长列数据,我想按组组织。

np.random.seed(0)
data = {'unit':['a']*5+['b']*5,\
    'day':list(range(5))+list(range(5)),\
    'data':np.random.random(10)*10}
df = pd.DataFrame.from_dict(data)

数据框如下所示:

  unit  day      data
0    a    0  5.488135
1    a    1  7.151894
2    a    2  6.027634
3    a    3  5.448832
4    a    4  4.236548
5    b    0  6.458941
6    b    1  4.375872
7    b    2  8.917730
8    b    3  9.636628
9    b    4  3.834415

我想按天将它整理成桌子:

  day    data a    data b
0   0  5.488135  6.458941
1   1  7.151894  4.375872
2   2  6.027634  8.917730
3   3  5.448832  9.636628
4   4  4.236548  3.834415

目标是便于按日绘制“数据a”和“数据b”(pd.DataFrame.to_clipboard并粘贴到Excel中)。

2 个答案:

答案 0 :(得分:0)

pivot

Pandas为此提供了一种方法:

res = df.pivot(index='day', columns='unit')

print(res)

          data          
unit         a         b
day                     
0     5.488135  6.458941
1     7.151894  4.375872
2     6.027634  8.917730
3     5.448832  9.636628
4     4.236548  3.834415

您需要为elevate your index to a seriesflatten hierarchical columns做更多的工作,但是数据是按您希望的结构。

答案 1 :(得分:0)

使用数据透视表

df=df.pivot_table(index=['day'], columns='unit', values='data').reset_index().rename_axis(None, 1)
df.rename(columns={'a':'data a','b':'data b'})

df    
   day    data a    data b
0    0  5.488135  6.458941
1    1  7.151894  4.375872
2    2  6.027634  8.917730
3    3  5.448832  9.636628
4    4  4.236548  3.834415