【发布时间】:2020-06-09 05:56:08
【问题描述】:
我必须按 C、D、E、B、A 的顺序对列进行排序,并按升序对它们进行分类。
在哪里——
- 带有 False 的 D 和带有 True 的 E 应该在 C 列之后具有最高优先级
- 列 Max(B) 和 Max(A) 的优先级应排在 C、D 和 E 之后
- 最后,带零的 C 和 B 的优先级应该最低。(应该有,D 和 E 排在 Max (A) 之后
df:
A B C D E
0 8 5 0 False True
1 45 35 0 True False
2 35 10 1 False True
3 40 5 2 True False
4 12 10 5 False False
5 18 15 13 False True
6 25 15 5 True False
7 35 10 11 False True
8 95 50 0 False False
按以下列顺序排序的条件:
示例条件顺序:
Max(C), D, E, Max(B) and Max(A) where as C!= 0 and B!=0
Also Column D with `True` and E with `False` should be on the top
C, D, E, A, Max(B), and Max (A) where as C== 0 and B !=0
Also Column Ds with `True` and Es with `False` on the top
C, D, E, A, B, and Max(A) where as C== 0 and B ==0
Also Column Ds with `True` and Es with `False` on the top
示例分类顺序 -
Category 1 - C, D(True), E(False), B, A and C!=0
Category 2 - C, D(True), E(True), B, A and C!=0
Category 3 - C, D(False), E(False), B, A and C!=0
Category 4 - C, D(False), E(True), B, A and C!=0
那么考虑C=0
Category 5 - B, D(True), E(False), B, A and B!=0 and C=0
Category 6 - B, D(True), E(True), B, A and B!=0 and C=0
Category 7 - B, D(False), E(False), B, A and B!=0 and C=0
Category 8 - B, D(False), E(True), B, A and B!=0 and C=0
等等
我试过了,通过更新升序但没有得到预期的输出:
df.sort_values(['C', 'D','E', 'B', 'A'], ascending=[False, False, False, False, False]) # without category
这是预期的输出:-
A B C D E Category
6 25 15 5 True False 1
3 40 5 2 True False 1
4 12 10 5 False False 3
5 18 15 13 False True 4
7 35 10 11 False True 4
2 35 10 1 False True 4
1 45 35 0 True False 5
8 95 50 0 False False 6
0 8 5 0 False True 7
【问题讨论】:
-
输出是否正确?
Category 1 - C, D(False), E(True), B, A and C!=0输出为6 25 15 5 True False 1- 未交换D=True, E=False? -
@jezrael - 感谢您的纠正,不,它不正确。让我更正
-
@jezrael - 更新问题,请检查。
标签: python pandas dataframe sorting