簡體   English   中英

按行的絕對值排序 dataframe

[英]Sorting dataframe by absolute value of a row

我有以下 dataframe:

import pandas as pd
data = {0: [-1, -14], 1: [-3, 2], 2: [7, 10], 4: [-10, 15]}
df = pd.DataFrame(data)

我知道如何對特定行進行排序:

df.sort_values(by=0, ascending=False, axis=1)

如何按第一行的絕對值對 dataframe 進行排序? 在這種情況下,我會有類似的東西:

sorted_data = {0: [-10, 15], 1: [7, 10], 2: [-3, 2], 4: [-1, -14]}

通過對第0行進行切片並將其索引傳遞給索引原始df對系列進行排序

df_sorted = df[df.iloc[0].abs().sort_values(ascending=False).index]

Out[94]:
    4   2  1   0
0 -10   7 -3  -1
1  15  10  2 -14

讓我們試試argsort

df = df.iloc[:,(-df.loc[0].abs()).argsort()]

Pandas 1.1 給出了一個key論點:

df.sort_values(0, axis=1, key=np.abs, ascending=False)


      4  2   1    0
0   -10  7  -3   -1
1   15   10  2  -14

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM