如何在 Pandas Series 的 argsort 方法中保留 NaN 為 NaN?
在 Pandas Series 中,argmax() 方法用於對給定 Series 的值進行排序,它將返回另一個 Series 物件,其中包含對原始 Series 值進行排序的索引。如果 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 值建立了一個 Series。然後,我們對該 Series 資料應用了 argsort() 方法。在獲取 argsort 後的 Series 後,我們使用 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
在上面的輸出塊中,我們可以看到初始 Series 物件、argsort 後的 Series 物件,以及替換 NaN 值後的 Series 物件。其中,我們可以觀察到由於替換了 NaN 值,資料型別索引發生了變化。
示例 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 Series 的 argsort 方法中保留 NaN 為 NaN。最初,我們使用 Python 字典建立了一個 Pandas Series 物件,然後我們結合使用了 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
我們透過在 argsort 方法中使用 mask 方法,實現了將 NaN 值保留為 NaN。這裡我們將 series.isnull() 方法作為 mask 方法的引數。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP