我想使用 argsort()
在我的 pandas 系列上并获得与 sort_values()
相同的结果
x = pd.Series([10.,40.,None,20.,None,30.])
y = x.sort_values()
# Output of y
# 0 10.0
# 3 20.0
# 5 30.0
# 1 40.0
# 2 NaN
# 4 NaN
# dtype: float64
idx = x.argsort()
# Output of idx
# 0 0
# 1 2
# 2 -1
# 3 3
# 4 -1
# 5 1
# dtype: int64
# How could f look like such that y.equals(z)==True
z = f(x,idx)
如何使用 idx
获得与 sort_values()
相同的结果?或者换句话说:如何将 argsort()
的输出应用于其他序列?特别是,NaN 或 None
条目应该放在系列/列表的后面。
最佳答案
我觉得 pandas
argsort
和 numpy
argsort
有问题,为了快速修复,使用 np.argsort
x.iloc[np.argsort(x.values)]
Out[219]:
0 10.0
3 20.0
5 30.0
1 40.0
2 NaN
4 NaN
dtype: float64
关于python - pd.Series.argsort() 和 nan 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57360061/