如何从一列中为其他列的每个组合查找最大值



我有一个这样的数据框:

df
col1    col2     col3    col4
 A       B         C       12
 A       B         C       8
 A       B         C       10
 P       Q         R       12
 P       Q         R       11
 K       L         S       1
 K       L         S       15
 U       V         R       20 

我想获取那些 col4 值对于每个 col1 和 col2 组合的 col3 值为最大值的行

例如,我正在寻找的结果是

col1    col2    col3    col4
 A        B       C       12
 P        Q       R       12
 K        L       S       15
 U        V       R       20

如何使用熊猫以最有效的方式做到这一点?

试试这个:

>>> import pandas as pd
>>> df = pd.read_csv("t.csv")
>>> df
  col1 col2  col3  col4
0    A    B     C    12
1    A    B     C     8
2    A    B     C    10
3    P    Q     R    12
4    P    Q     R    11
5    K    L     S     1
6    K    L     S    15
7    U    V     R    20
>>> df.groupby(['col1']).max()
     col2  col3  col4
col1
A       B     C    12
K       L     S    15
P       Q     R    12
U       V     R    20

您可以使用 max(( 使用 groupby 函数:

df = pd.DataFrame({'col1' : ['A','A','A','P','P'], 'col2' : ['B','B','B','Q','Q'],
                   'col3':['C','C','C','R','R'], 'col4':[12,8,10,12,11]})
df.groupby(['col1', 'col2']).max()

外:

col1    col2    col3    col4    
A   B   C   12
P   Q   R   12

您需要使用 groupby:

import pandas as pd
# setup test data
data = {'col1': ['A', 'A', 'A', 'P', 'P', 'K', 'K', 'U'], 'col2': ['B', 'B', 'B', 'Q', 'Q', 'L', 'L', 'V'],
    'col3': ['C', 'C', 'C', 'R', 'R', 'S', 'S', 'R'], 'col4': [12, 8, 10, 12,11,1,15,20]}
data = pd.DataFrame(data=data)
# get max values
out_data = data.groupby(['col1', 'col2', 'col3']).max()

输出:

col1 col2 col3  col4    
A    B    C       12
K    L    S       15
P    Q    R       12
U    V    R       20

最新更新