如何将Nan值移动到所有列的结尾 [英] How to move Nan values to end in all columns
本文介绍了如何将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屋!
查看全文