我有以下df
,
pct id
0.3 631
0.2 115
0.1 312
0.2 581
0.01 574
0.09 586
我想先按df
对pct
进行排序,
df.sort_values(by=['pct'], ascending=False, inplace=True)
然后将pct
加到0.8并计算出这样做的行数,例如在这种情况下,前4行;我想知道什么是最好的方法。使用pd.eval
或pd.query
?
答案 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