如何使用pandas

时间:2017-02-08 06:23:04

标签: python pandas

我需要帮助重塑csv文件中的列(列'Break'),看起来像这样

Axe Break
1   ww
2   ee
3   qq
4   xx
5   dd
5   gg
4   hh
6   tt
9   yy
1   uu
1   ii
2   oo
5   pp
4   mm
5   kk
5   ll
7   mm
2   bb
7   pp
0   zz

成这样的矩阵形式

[[ww,ee,qq,xx,dd,gg,hh,tt,yy,uu],
 [ii,oo,pp,mm,kk,ll,mm,bb,pp,zz]]

使用熊猫。

我发现了一个看起来像我想问的问题,但我认为这个问题与我想做的有点不同。

Reshaping the third column of a CSV file into a matrix

我一直在阅读pandas教程,但似乎没有办法做到这一点。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

您可以先使用index创建新cumsum的列,然后使用pivot创建reindex,最后按values转换为numpy array

df['g'] = (df.Axe == 1).cumsum()
df = df.pivot(index='g', columns='Axe', values='Break')
       .reindex(columns=list(range(1,10)) + [0])

print (df)
Axe   1   2   3   4   5   6   7   8   9   0
g                                          
1    ww  ee  qq  xx  dd  gg  hh  tt  yy  uu
2    ii  oo  pp  mm  kk  ll  mm  bb  pp  zz

print (df.values)
[['ww' 'ee' 'qq' 'xx' 'dd' 'gg' 'hh' 'tt' 'yy' 'uu']
 ['ii' 'oo' 'pp' 'mm' 'kk' 'll' 'mm' 'bb' 'pp' 'zz']]

答案 1 :(得分:2)

您可以使用重塑。

In [702]: df['Break'].reshape(2, len(df.index)/2)
Out[702]:
array([['ww', 'ee', 'qq', 'xx', 'dd', 'gg', 'hh', 'tt', 'yy', 'uu'],
       ['ii', 'oo', 'pp', 'mm', 'kk', 'll', 'mm', 'bb', 'pp', 'zz']], dtype=object)

答案 2 :(得分:2)

使用values属性将其放到numpy,然后reshape参数可以在需要确定的维度中使用-1

df.Break.values.reshape(2, -1)

array([['ww', 'ee', 'qq', 'xx', 'dd', 'gg', 'hh', 'tt', 'yy', 'uu'],
       ['ii', 'oo', 'pp', 'mm', 'kk', 'll', 'mm', 'bb', 'pp', 'zz']], dtype=object)