Pandas 如何将系列的nan保留为nan的argsort方法

Pandas 如何将系列的nan保留为nan的argsort方法

在pandas系列中,argmax()方法用于对给定系列的值进行排序,并返回另一个系列对象,其中包含将原始系列值排序的索引。如果Series对象包含任何空值或缺失值,那么argsort()方法会给出-1,以表示该缺失值(NaN值)的索引。

不幸的是,argsort方法没有任何参数来跳过空值。如果要更改缺失值(-1)的默认表示形式。那么我们需要遵循下面描述的方法。

示例1

import pandas as pd
import numpy as np

# creating series
series = pd.Series([8,6,None,5,2,None,7])
print(series)

# apply argsort()
result = series.argsort()
print("Output argsort:", result)

# replace -1 with Nan
print("Output after replacing -1 value: ",result.replace(-1,np.nan))

解释

在下面的示例中,我们使用Python的整数列表和一些None值创建了一个系列。然后,我们对该系列数据应用了argsort()方法。在获取到argsort后的系列之后,我们使用NumPy包将-1值替换为nan。

输出

0 8.0
1 6.0
2 NaN
3 5.0
4 2.0
5 NaN
6 7.0
dtype: float64

Output argsort:
0  3
1  2
2 -1
3  1
4  4
5 -1
6  0
dtype: int64

Output after replacing -1 value:
0 3.0
1 2.0
2 NaN
3 1.0
4 4.0
5 NaN
6 0.0
dtype: float64

在上面的输出块中,我们可以看到初始的系列对象、argsorted系列对象,以及替换了NaN值的系列对象。我们可以观察到由于替换了NaN值,dtype索引发生了改变。

示例2

import pandas as pd
import numpy as np

# creating series
series = pd.Series({'A':123,'B':458,"C":None, "D":238, 'E':np.nan, 'G':360 })
print(series)

# apply argsort() and replace -1 with Nan
result = series.argsort().mask(series.isnull())

print("Output argsort:", result)

解释

让我们采用另一种方法,在pandas系列的argsort方法中将nan保留为nan。最初,我们使用Python字典创建了一个pandas系列对象,然后我们应用了pandas的mask方法以及argsort方法来保留nan值。

输出

A 123.0
B 458.0
C   NaN
D 238.0
E   NaN
G 360.0
dtype: float64

Output argsort:
A 0.0
B 2.0
C NaN
D 3.0
E NaN
G 1.0
dtype: float64

我们通过在mask方法中使用argsort方法的方法,成功去除了NaN值。在这里,我们将series.isnull()方法作为mask方法的参数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 精选笔记