как из датафрейма размером 5*5 сделать датафрейм с одним столбцом

Есть датафрейм размером 3х5

1 2 3
095 093 094
109 NaN NaN
09 10 NaN
019 020 NaN
04 05 123

Возможно ли из датафрейма 3Х5 сделать датафрейм 1Х11 без пустых значений

1
095
109
09
019
04
093
10
020
05
094
123

Ответы (2 шт):

Автор решения: CrazyElf

Примерно так:

df1 = df.T.stack(dropna=True).to_frame().reset_index(drop=True)

Подсмотрено на английском СО.

По шагам:

  • T нужно, чтобы данные шли в нужном порядке
  • stack(dropna=True) делает из матричного датафрейма линейную серию, попутно выкидывая NA
  • to_frame() превращает серию обратно в датафрейм с одной колонкой (вроде бы на выходе нужен именно датафрейм)
  • .reset_index(drop=True) выкидывает сложный мультииндекс, образовавшийся на первом шаге

То есть в принципе достаточно уже первых двух шагов, остальное делается чтобы привести результат в нужный/красивый вид.

→ Ссылка
Автор решения: strawdog

можно воспользоваться методом melt:

res = df.melt()["value"].dropna()

res:

0      95.0
1     109.0
2       9.0
3      19.0
4       4.0
5      93.0
7      10.0
8      20.0
9       5.0
10     94.0
14    123.0
→ Ссылка