[英]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.