我有三列要合并和排序
x1 x2 x3 x4
US DE None None
FR DE US None
FR None None None
DE CA None None
我想做的是按字母顺序合并这四列。
merged
DE, US
DE, FR, US
FR
CA, DE
您可以过滤出None
s,进行排序并加入列表理解应该非常快:
df['merged'] = [', '.join(sorted(filter(None, x))) for x in df.to_numpy()]
使用lambda函数的替代方法比较慢:
df['merged'] = df.apply(lambda x: ', '.join(sorted(filter(None, x))), axis=1)
print (df)
x1 x2 x3 x4 merged
0 US DE None None DE, US
1 FR DE US None DE, FR, US
2 FR None None None FR
3 DE CA None None CA, DE
如果使用纯大熊猫方法,则DataFrame
该方法最慢:
s = df.stack().sort_values().groupby(level=0).agg(', '.join)
print (s)
0 DE, US
1 DE, FR, US
2 FR
3 CA, DE
dtype: object
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句