我有一个包含20个项目的pandas数据框,我想重塑为5列4行。
这是否可以使用pandas数据帧?然后是否可以反过来将生成的5 * 4数据帧转换为2 * 10或1 * 20?
答案 0 :(得分:0)
我认为您可以先使用values
转换为numpy array
,然后转换为numpy.ndarray.reshape
:
df = pd.DataFrame({'A':[1,2,3,7,7],
'B':[4,5,6,8,0],
'C':[7,8,9,7,8],
'D':[1,3,5,8,1]})
print (df)
A B C D
0 1 4 7 1
1 2 5 8 3
2 3 6 9 5
3 7 8 7 8
4 7 0 8 1
df = pd.DataFrame(df.values.reshape(4,5),columns=list('ABCDE'))
print (df)
A B C D E
0 1 4 7 1 2
1 5 8 3 3 6
2 9 5 7 8 7
3 8 7 0 8 1
print (df.values.reshape(10,2))
[[1 4]
[7 1]
[2 5]
[8 3]
[3 6]
[9 5]
[7 8]
[7 8]
[7 0]
[8 1]]
print (pd.DataFrame(df.values.reshape(10,2), columns=list('AB')))
A B
0 1 4
1 7 1
2 2 5
3 8 3
4 3 6
5 9 5
6 7 8
7 7 8
8 7 0
9 8 1
通过评论编辑:
pos = [1,5,7,8,10,8]
print (pd.DataFrame(np.array(pos).reshape(2,3),columns=list('ABC')))
A B C
0 1 5 7
1 8 10 8