基本上,我有这样的数据框:
c1 c2
0 a x
1 b NaN
我想有这样的专栏c
:
c1 c2 c
0 a x [a, x]
1 b NaN [b]
这是我的解决方案:
import pandas as pd
import numpy as np
df = pd.DataFrame({'c1': ['a', 'b'], 'c2': ['x', np.nan]})
df['c'] = df[['c1', 'c2']].values.tolist()
df['c'] = df['c'].apply(lambda x: [i for i in x if i is not np.nan])
但我认为存在更短、更简单、更疯狂的东西。你能帮我做一个单线吗?
让我们尝试stack
和groupby
df['c'] = df.stack().groupby(level=0).agg(list)
list
理解的替代方法
df['c'] = [v[pd.notna(v)] for v in df.values]
c1 c2 c
0 a x [a, x]
1 b NaN [b]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句