首页 > 解决方案 > 获取列中的最大值

问题描述

我的数据框如下所示:

Country Code Duration
A        1     0
A        1     1
A        1     2
A        1     3
A        2     0
A        2     1
A        1     0
A        1     1
A        1     2

我需要从“持续时间”列中获取最大值——不仅是最大值,而且是该列中每个数字序列的最大值列表。输出可能如下所示:

Country Code Duration
  A      1     3
  A      2     1
  A      1     2

我本可以按“代码”分组,但它的值经常重复,所以这可能不是一个选择。任何帮助或提示将不胜感激。

标签: pythonpandas

解决方案


首先,我们创建一个掩码来标记序列。然后我们 groupby 创建想要的输出:

m = (~df['Code'].eq(df['Code'].shift())).cumsum()

df.groupby(m).agg({'Country':'first',
                   'Code':'first',
                   'Duration':'max'}).reset_index(drop=True)

  Country  Code  Duration
0       A     1         3
1       A     2         1
2       A     1         2

推荐阅读