如何检查日期和最大值的时间在大型数据集的Python

问题描述 投票:1回答:1

我有数据集是每个〜线条30-60,000,000。每个Name有它每天的数据集相关联的一个或多个独特ID。一些OP_DATEOP_HOUR的唯一ID可以为每个Load1,2,3 0或空值。

我正在寻找一种方法来计算,看起来像这些在所有OP_DATE列的总最大值:

Name       ID       OP_DATE      OP_HOUR    OP_TIME     Load1       Load2     Load3
OMI        1        2001-01-01   1          1           11          10        12
OMI        1        2001-01-01   2          0.2         1           12        10
.
.
OMI        2A      2001-01-01    1          0.4                     5
.
. 
OMI        2A      2001-01-01    24         0.6         2            7        12
.
.
Kain 2     01      2002-01-01    1          0.1         6           12
Kain 2     01      2002-01-01    2          0.98        3           14        7
.
.
OMI        1       2018-01-01    1          0.89        12           10        20
.
.

我想找到Load1Load2Load3的最大值,并查找OP_DATEOP_TIMEOP_HOUR,它发生在。

我想输出是:

Name    ID    max OP_DATE   max OP_HOUR  max OP_TIME    max Load1   max Load2   max Load3
OMI     1     2011-06-11    22 .....         max values on dates
OMI     2A    2012-02-01    12 .....         max values on dates
Kain 2  01    2006-01-01    1.....           max values on dates

有没有一种方法,我可以很容易地做到这一点?

我试过了:

unique_MAX =  df.groupby(['Name','ID'])['Load1', 'Load2', 'Load3'].max().reset_index()

但这只是日期组,并给我一个总的最大 - 我想相关的日期,小时,次为好。

python python-3.x pandas dataframe max
1个回答
0
投票

要获得完整的行对于任何给定域[MAX]信息:

  • 获得索引位置为每个你的愿望组的最大
  • 使用索引在每个位置返回整行

用于找到最大LOAD1对于每个名称和ID对的例子

idx = df.groupby(['Name','ID'])['Load1'].transform(max) == df['Load1']
df[idx]

Out[14]: 
    name   ID        dt  x  y
1   Fred  050  1/2/2018  2  4
4   Dave  001  1/3/2018  6  1
5  Carly  002  1/3/2018  5  7
© www.soinside.com 2019 - 2024. All rights reserved.