Используйте stack
с reset_index
и для преобразования Series
в один столбец DataFrame
функция to_frame
:
df = df.stack().reset_index(drop=True).to_frame('NUMBER')
print (df)
NUMBER
0 1
1 2
2 3
3 3
4 3
5 15
6 15
РЕДАКТИРОВАТЬ:
data = [['1','100',np.nan],['2',np.nan,np.nan],[np.nan,'3',np.nan],
[np.nan,'3',np.nan],[np.nan,'3',np.nan],[np.nan,np.nan,'15'],
[np.nan,np.nan,'15']]
df = pd.DataFrame(data,columns=['no','number', 'numbers'])
print (df)
no number numbers
0 1 100 NaN
1 2 NaN NaN
2 NaN 3 NaN
3 NaN 3 NaN
4 NaN 3 NaN
5 NaN NaN 15
6 NaN NaN 15
Если хотите, чтобы первое не числовое значение в строках:
df1 = df.bfill(axis=1).iloc[:, 0].to_frame('NUMBER')
print (df1)
NUMBER
0 1
1 2
2 3
3 3
4 3
5 15
6 15
При необходимости все не числовые значения:
df2 = df.stack().reset_index(drop=True).to_frame('NUMBER')
print (df2)
NUMBER
0 1
1 100
2 2
3 3
4 3
5 3
6 15
7 15