python - 如何找到多索引 DataFrame 的每个级别的最大绝对值

标签 python pandas dataframe

如何找到多索引数据框每个级别的最大绝对值?

数据如下所示:

                        data
            a   b   c   
            1   X   1   -2
                X   2   +2
            2   X   1   -1
                X   2   +2
                Y   1   +6
            3   X   1   -5
                Y   1   -3
                Y   2   +5

以下是我在保持多索引级别 1 和 2 的同时期望收到的内容:

                        data
                a   b   
                1   X   2
                2   X   2
                    Y   6   
                3   X   -5
                    Y   +5

最佳答案

使用idxmax:

idx = df['data'].abs().groupby(level=[0,1]).idxmax()
df.loc[idx]

结果:

       data
a b c      
1 X 1    -2
2 X 2     2
  Y 1     6
3 X 1    -5
  Y 2     5

解释:

idx = df['data'].abs()          # convert the `data` column to its absolute value
        .groupby(level=[0,1])   # group by the first two levels (`a` and `b`)
        .idxmax()               # find the index of the row with max value in each group
df.loc[idx]                     # get the rows at indexes `idx`

关于python - 如何找到多索引 DataFrame 的每个级别的最大绝对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57629793/

相关文章:

r - 基于多个模式 R 对数据帧的多列求和

python - 理解束模式和 self.__dict__

python - pandas 有条件地按组移动或向前填充另一列

r - 合并数据框中的重复行并创建新列

python - 如何用小时列融化 `pandas.DataFrame` 并将它们划分为 15 分钟间隔

python - python 列表中每个月的工作日

python - 如何在Python中按工作日、月份等对pandas系列时间码进行排序/分组?

python - 如果可能的话,使用切片选择方法批量删除数据框的列?

python - 如何在 python 中对命令行参数进行分组?

python - 解码后的json值