我有一个看起来像这样的数据框(其中第一行是索引号):
0 1 2 3 4 5 6 7 8
66 56 34 40 41 55 80 None None
90 91 12 44 89 60 11 45 60
10 20 49 90 33 40 67 55 None
.
.
作为输出,我需要的是获取每第 3 个值,忽略任何无值并将其重新堆叠成一行,如下所示:
0 1 2
66 56 34
40 41 55
80 90 91
12 44 89
60 11 45
60 10 20
49 90 33
40 67 55
有没有简单的方法来旋转和堆叠它?
最佳答案
首先,我们可以使用ravel
将所有值转换为平面数组,然后过滤掉None
和reshape
:
x = df.values.ravel()
x[x != None].reshape(-1,3) # pd.DataFrame(x[x != None].reshape(-1,3))
# if you want to have a DataFrame instead of
# numpy array
输出:
array([[66., 56., 34.],
[40., 41., 55.],
[80., 90., 91.],
[12., 44., 89.],
[60., 11., 45.],
[60., 10., 20.],
[49., 90., 33.],
[40., 67., 55.]])
关于python - 将 n 列重新堆叠为 3 列 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55976423/