如何将Nan值移动到所有列的结尾 [英] How to move Nan values to end in all columns

查看:53
本文介绍了如何将Nan值移动到所有列的结尾的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的df,

A     B     C
a     NaN   NaN
b     NaN   NaN
c     NaN   NaN
NaN   a     NaN
NaN   b     NaN
NaN   c     NaN
NaN   NaN   a
NaN   NaN   b
NaN   NaN   c

所需的输出

A   B   C
a   a   a
b   b   b
c   c   c
NaN NaN NaN 
NaN NaN NaN 
NaN NaN NaN 
NaN NaN NaN 
NaN NaN NaN 
NaN NaN NaN

推荐答案

您可以创建布尔掩码,然后使用argsort对布尔掩码进行排序,并为最终数组建立索引:

You can create a boolean mask, then sort the boolean mask using argsort, and index your final array:

A = df.isnull().values

out = df.values[np.argsort(A, axis=0, kind='mergesort'), np.arange(A.shape[1])]

array([['a', 'a', 'a'],
       ['b', 'b', 'b'],
       ['c', 'c', 'c'],
       [nan, nan, nan],
       [nan, nan, nan],
       [nan, nan, nan],
       [nan, nan, nan],
       [nan, nan, nan],
       [nan, nan, nan]], dtype=object)

并重新创建DataFrame:

And to recreate the DataFrame:

pd.DataFrame(out, columns=df.columns)

     A    B    C
0    a    a    a
1    b    b    b
2    c    c    c
3  NaN  NaN  NaN
4  NaN  NaN  NaN
5  NaN  NaN  NaN
6  NaN  NaN  NaN
7  NaN  NaN  NaN
8  NaN  NaN  NaN

这篇关于如何将Nan值移动到所有列的结尾的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆