我需要獲取最小n
項目的DataFrame的索引,而忽略NA。如果我沒有來港,我應該這樣做:在存在NA時獲取最小項目的索引
s = pd.Series([4,3,1,5,2], index=range(10,15))
idx = s.argsort()[:2]
# check:
s.iloc[idx] # [1, 2] as desired
但在NA的存在,這是不行的:
s = pd.Series([None,3,1,5,2], index=range(10,15))
idx = s.argsort()[:2]
# check:
s.iloc[idx] # [2.0, 3.0] instead of [1.0, 2.0]
這是因爲arg_sort
(不像sort_values
)簡單地完全跳過NA,並且不包括它們在計數中。有沒有像arg_sort
那樣的功能,但將NA放在最後?或者,重寫上述代碼與NA一起工作的最佳方法是什麼?
我想我可以在每次執行此操作之前都會執行drop_na()
,但是這將在數據框中爲多個列完成,因此對每個列再次傳遞似乎效率低下。
啊。 ..我忘了' nsmallest'也保持索引。 – max