Ana*_*vko 2 python sorting pandas
我正在尝试按两列对数据进行排序。其中之一是绝对值。按两列http://pandas.pydata.org/pandas-docs/version/0.17/ generated/pandas.DataFrame.sort_values.html 和按绝对值对值进行排序很容易 按绝对值排序按一列的绝对值排序,但我无法合并这两种方法。
例如,我有df已经按 abs 'dist' 排序,然后我想通过 'take' 在内部对其进行排序
In[4]:df
Out[4]:
q_id dist taking
0 406 6.0 0.17
1 448 6.0 0.46
2 449 6.0 0.42
3 208 -6.0 0.25
4 244 -7.0 0.12
5 203 7.0 0.40
6 614 8.0 0.50
7 243 -8.0 0.40
Run Code Online (Sandbox Code Playgroud)
它可能看起来像这样
df_sorted
Out[]:
q_id dist taking
1 448 6.0 0.46
2 449 6.0 0.42
3 208 -6.0 0.25
0 406 6.0 0.17
4 244 -7.0 0.12
5 203 7.0 0.40
6 614 8.0 0.50
7 243 -8.0 0.40
Run Code Online (Sandbox Code Playgroud)
Ascending=[True, False] 也是必需的,但我希望这不会成为问题。
有谁知道如何对该 DataFrame 进行排序?
带辅助列的解决方案:
df = (df.assign(A=df['dist'].abs())
.sort_values(['A','taking'],ascending=[True, False])
.drop('A', 1))
print (df)
q_id dist taking
1 448 6.0 0.46
2 449 6.0 0.42
3 208 -6.0 0.25
0 406 6.0 0.17
5 203 7.0 0.40
4 244 -7.0 0.12
6 614 8.0 0.50
7 243 -8.0 0.40
Run Code Online (Sandbox Code Playgroud)