我有数据集是每个〜线条30-60,000,000。每个Name
有它每天的数据集相关联的一个或多个独特ID
。一些OP_DATE
和OP_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
.
.
我想找到Load1
,Load2
,Load3
的最大值,并查找OP_DATE
,OP_TIME
和OP_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()
但这只是日期组,并给我一个总的最大 - 我想相关的日期,小时,次为好。
要获得完整的行对于任何给定域[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