熊猫.按索引分组并对列应用 max



我正在尝试按 3 个元素对数据帧进行分组,并希望从组中获取列值最高的行,但max方法适用于所有列。我怎样才能做到这一点?

我做什么:

In [69]: fr
Out[69]:
             ping  delta
0   1516190798773    161
1   1516191845372    143
2   1516192904988    144
3   1516193952748    295
4   1516195008033    233
5   1516196049407    252
In [70]: fr.groupby(fr.index / 3).max()
Out[70]:
            ping  delta
0  1516192904988    161
1  1516196049407    295

我想得到的结果:

            ping  delta
0  1516190798773    161
1  1516193952748    295

如果要first列中的值ping deltamax值:

df = fr.groupby(fr.index // 3).agg({'delta':'max','ping':'first'})
print (df)
            ping  delta
0  1516190798773    161
1  1516193952748    295

如果要max delta和所有对应行中的值:

df = fr.loc[fr.groupby(fr.index // 3)['delta'].idxmax()]
print (df)
            ping  delta
0  1516190798773    161
3  1516193952748    295

更好的差异样本:

print (fr)
            ping  delta
0  1516190798773    161
1  1516191845372    143
2  1516192904988    144
3  1516193952748    233 <-swapped values 233
4  1516195008033    295 <-swapped values 295
5  1516196049407    252
df = fr.groupby(fr.index // 3).agg({'delta':'max','ping':'first'})
print (df)
            ping  delta
0  1516190798773    161
1  1516193952748    295
df = fr.loc[fr.groupby(fr.index // 3)['delta'].idxmax()]
print (df)
            ping  delta
0  1516190798773    161
4  1516195008033    295

最新更新