簡體   English   中英

Pandas 多索引 dataframe - 從多索引中的一個索引中選擇最大值

[英]Pandas multiindex dataframe - Selecting max from one index within multiindex multi culomn

我在下面 Dataframe 如何找到專用結果。 我發現 A 列的多行最大值。

                col_0  col_1
Caps Lower            
A    a     0  0.246490   2
           1 -1.265711   5
           2 -0.477415   6
           3 -0.355812   1
           4 -0.724521   2
     b     0 -0.409198   1
           1 -0.062552   1
           2 -0.731789   9 
           3  1.131616   5 
           4  0.085248   3 
B    a     0  0.193948   7
           1  2.010710   6
           2  0.289300   4
           3  0.305373   3
           4  1.376965   4
     b     0  0.210522   1
           1  1.431279   3
           2 -0.247171   1
           3  0.899074   8
           4  0.639926   1

結果必須是:

        col_0  col_1
Caps          
A    -0.731789   9
B     0.899074   8

如何使用col_1找到最大值?

根據您想要的示例 output,您的問題似乎是:如何返回每個Caps組中col_1值最大的行。

您的示例輸入使它看起來像'Caps''Lower'是您的索引,但如果它們不是索引而只是常規列,它會更容易一些。

我這樣設置你的數據:

df = pd.DataFrame({'Caps': np.repeat(['A', 'B'], 10),
             'Lower': list(np.repeat(['a', 'b'], 5)) * 2,
              'col_0': [0.246490, -1.265711, -0.477415, -0.355812, -0.724521,
                        -0.409198, -0.062552, -0.731789, 1.131616, 0.085248,
                        0.193948, 2.010710, 0.289300, 0.305373, 1.376965,
                        0.210522, 1.431279, -0.247171, 0.899074, 0.639926],
              'col_1': [2, 5, 6, 1, 2, 1, 1, 9, 5, 3, 7, 6, 4, 3, 4, 1, 3, 1, 8, 1]
             })

[pandas.Series.idxmax][1]應該有幫助,它返回每個Caps組中col_1最大的行的索引:

df.groupby('Caps')['col_1'].idxmax()
# Caps
# A     7
# B    18
# Name: col_1, dtype: int64

將其插入:

df.loc[df.groupby('Caps')['col_1'].idxmax()]
#    Caps   Lower   col_0       col_1
# 7  A      a      -0.731789    9
# 18 B      b       0.899074    8

暫無
暫無

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

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