python - pd.Series.argsort() 和 nan 值

标签 python pandas

我想使用 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 argsortnumpy 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/

相关文章:

python - 如何在数据框中计算每日和每周的加类时间?

python gensim 从 doc2vec taggedlinedocument 中检索原始句子

python - 在 pandas 数据框中使用 for 循环迭代列

python - 将 Pandas 系列转换为 DataFrame

python - 根据列名和最后一个非 NaN 值压缩 pandas 数据帧

Python:从字符串添加决策列(Pandas)

Python:检查字符串是否符合特定格式

python - 我无法从公共(public)跟踪器 libtorrent 下载 torrent

python - 如何将某些特定的 .jpg 文件复制到另一个目录?

python - 尝试合并 2 个数据帧但得到 ValueError