计算Python中每一行中特定列的下3行的最大值

我有一个这样的数据框:

    seq                         score
0   TAAGAATTGTTCTCTGTGTATTT     -23.19
1   AAGAATTGTTCTCTGTGTATTTC     -3.67
2   AGAATTGTTCTCTGTGTATTTCA     -16.49
3   GAATTGTTCTCTGTGTATTTCAG     -11.83
4   AATTGTTCTCTGTGTATTTCAGG     -10.86
5   ATTGTTCTCTGTGTATTTCAGGC     -7.24

我想循环选择3行,然后获得分数的最大值。

我正在寻找的结果是这样的:


    seq                          score
1   AAGAATTGTTCTCTGTGTATTTC     -3.67
5   ATTGTTCTCTGTGTATTTCAGGC     -7.24

我尝试应用groupby函数和排序,但是似乎不起作用,因为seq列具有唯一值。

我还能使用什么其他方法来获得这种结果?

xiangmuwei 回答:计算Python中每一行中特定列的下3行的最大值

使用DataFrameGroupBy.idxmax表示每个组的最大值索引,该组的最大索引是将索引除以3,然后将行除以DataFrame.loc

df = df.loc[df.groupby(df.index // 3)['score'].idxmax()]
print (df)
                       seq  score
1  AAGAATTGTTCTCTGTGTATTTC  -3.67
5  ATTGTTCTCTGTGTATTTCAGGC  -7.24

详细信息

print (df.index // 3)
Int64Index([0,1,1],dtype='int64')

print (df.groupby(df.index // 3)['score'].idxmax())
0    1
1    5
Name: score,dtype: int64
,
import pandas as pd

df = pd.DataFrame({'seq':['TAAGAATTGTTCTCTGTGTATTT','AAGAATTGTTCTCTGTGTATTTC','AGAATTGTTCTCTGTGTATTTCA','GAATTGTTCTCTGTGTATTTCAG','AATTGTTCTCTGTGTATTTCAGG','ATTGTTCTCTGTGTATTTCAGGC'],'score': [-23.19,-3.67,-16.49,-11.83,-10.86,-7.24]})
df = df.loc[df.groupby(df.index // 3)['score'].idxmax()]
print(df)
本文链接:https://www.f2er.com/3030753.html

大家都在问