Удалите пропущенные значения на Series.dropna
и преобразуйте в Серии в словаре:
s = pd.Series({x: df[x].dropna().tolist() for x in df.columns})
print (s)
Netflix [0.1, 0.12, 0.4]
TV [0.2, 0.5, 0.6, 0.5, 0.41, 0.2]
DVD [0.3, 0.15, 0.8, 0.41]
dtype: object
... или в DataFrame.apply
:
s = df.apply(lambda x: x.dropna().tolist())
print (s)
Netflix [0.1, 0.12, 0.4]
TV [0.2, 0.5, 0.6, 0.5, 0.41, 0.2]
DVD [0.3, 0.15, 0.8, 0.41]
dtype: object
Последнее, если нужно 2 столбца DataFrame
:
df1 = s.rename_axis('a').reset_index(name='b')
print (df1)
a b
0 Netflix [0.1, 0.12, 0.4]
1 TV [0.2, 0.5, 0.6, 0.5, 0.41, 0.2]
2 DVD [0.3, 0.15, 0.8, 0.41]