我需要帮助重塑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教程,但似乎没有办法做到这一点。
感谢您的帮助。
答案 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)