熊猫如何计算其列值加起来达到阈值的行数

时间:2019-07-05 10:12:54

标签: python python-3.x pandas dataframe

我有以下df

pct    id
0.3    631
0.2    115
0.1    312
0.2    581
0.01   574
0.09   586

我想先按dfpct进行排序,

df.sort_values(by=['pct'], ascending=False, inplace=True)

然后将pct加到0.8并计算出这样做的行数,例如在这种情况下,前4行;我想知道什么是最好的方法。使用pd.evalpd.query

1 个答案:

答案 0 :(得分:3)

使用Series.cumsum的累积总和,如@Chris A所述,如果需要计算行数,请使用sum

out = df['pct'].cumsum().lt(0.8).sum()
print (out)
4

或按boolean indexing进行过滤:

df1 = df[df['pct'].cumsum().lt(0.8)]
print (df1)
   pct   id
0  0.3  631
1  0.2  115
3  0.2  581
2  0.1  312