大熊猫。按索引分组并为列

时间:2018-01-18 09:54:48

标签: python pandas pandas-groupby

我正在尝试按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

1 个答案:

答案 0 :(得分:3)

如果first列中的ping值和max中的值delta值<:}

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