如何从其他各列的每种组合的一列中找到最大值

时间:2019-06-03 08:30:27

标签: python pandas dataframe

我有一个像这样的数据框:

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 

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

例如,我寻找的结果是

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

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

3 个答案:

答案 0 :(得分:0)

您可以通过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

答案 1 :(得分:0)

尝试一下:

>>> 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

答案 2 :(得分:0)

您需要使用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