【发布时间】:2015-05-15 03:55:32
【问题描述】:
我正在使用 DataFrame.sort 并针对将所有 NA 值推到末尾的默认行为。
问题在于,当您添加辅助排序列时,第一个排序列上的 NA 值的行为与非 NA 值不同。显然,如果您在第一列中有 NA,如果它们不是 NA,它将被辅助列覆盖。
例如:
In [1]: df = DataFrame([[1, 1], [None, 0]])
In [2]: df.sort([0])
Out[2]:
0 1
0 1 1
1 NaN 0
In [3]: df.sort([0, 1])
Out[3]:
0 1
1 NaN 0
0 1 1
最后的排序展示了不受欢迎的行为:第一个排序列 (0) 上的值是 NaN,因此记录 1 应该在末尾。不是,因为显然第二列 (1) 优先。
有没有什么方法可以对df 进行排序,这样辅助排序列将仅用于解决第一个排序列之间的相等问题,同时仍将所有 NA 保留在末尾,而不管辅助列的值如何?
【问题讨论】:
-
你有哪个版本的熊猫?我无法用 0.15.2 复制第二个示例
-
是的,这在 pandas 0.16.0 上也可以正常工作
-
@chrisaycock 这是 0.13.1
-
升级是我的建议