gpt4 book ai didi

python - 如何根据 idxmax 对数据框进行排序?

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:31 25 4
gpt4 key购买 nike

我有一个这样的数据框:

    A  B   C
0 1 2 1
1 3 -8 10
2 10 3 -20
3 50 7 1

我想根据每列中最大绝对值的索引重新排列它的列。在 A 列中,最大绝对值在第 3 行,在 B 中是第 1 行,在 C 中是第 2 行,这意味着我的新数据框应该按照 B C A 的顺序。

目前我是这样做的:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 3, 10, 50], 'B': [2, -8, 3, 7], 'C': [1, 10, -20, 1]})
indMax = abs(df).idxmax(axis=0)
df = df[np.argsort(indMax)]

因此,我首先确定存储在 indMax 中的每列最大值的索引,然后对其进行排序并相应地重新排列数据帧,从而得到所需的输出:

   B   C   A
0 2 1 1
1 -8 10 3
2 3 -20 10
3 7 1 50

我的问题是是否有可能将函数 idxmax 直接传递给 sort 函数并更改数据帧 inplace

最佳答案

IIUC 下面做你想做的事:

In [69]

df.ix[:,df.abs().idxmax().sort_values().index]
Out[69]:
B C A
0 2 1 1
1 -8 10 3
2 3 -20 10
3 7 1 50

这里我们确定idxmaxabs值,对值进行排序并传递索引以索引 df。

至于就地排序,您可以将其分配回 df。

对于 0.17.0 之前的版本,以下工作:

In [75]:
df.ix[:,df.abs().idxmax().sort(inplace=False).index]

Out[75]:
B C A
0 2 1 1
1 -8 10 3
2 3 -20 10
3 7 1 50

关于python - 如何根据 idxmax 对数据框进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com