从pandas中的数据框中的一列移动到多列或多列

时间:2016-10-18 08:17:17

标签: pandas dataframe transform

我有一个包含20个项目的pandas数据框,我想重塑为5列4行。

这是否可以使用pandas数据帧?然后是否可以反过来将生成的5 * 4数据帧转换为2 * 10或1 * 20?

1 个答案:

答案 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