Сначала мы можем преобразовать все значения в плоский массив с помощью ravel
, а затем отфильтровать None
s и 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.]])