我想获取特定列的所有行,直到达到计数pandas

时间:2018-06-28 23:03:14

标签: python pandas

我正在尝试计算百分比并删除低于某个百分比的所有行。我已经尝试了分位数方法,但是我想自己编写代码。

#get the frequency of each part number and add it to the dataframe
repair['FREQ'] = \
    repair.groupby('PART_NO', as_index=False)['PART_NO'].transform(lambda s: s.count())
repair = repair[['CONFIG_CD','COMPONENT_ISSUE','SOLD_SHIP','SALES_ORG_ID','WARRANTY_TYPE','NOT_SCEN','PART_NO','FREQ']]

在这里,我采用PART_NO并获取每个部分的频率并将其作为列添加到称为FREQ的数据帧中。

现在,我想获得FREQ的第95个百分位数,我可以通过将0.95乘以FREQ的项数+ 1来获得。如下所示:

list=repair['FREQ'].tolist()
index=(len(list)+1)*0.95
index

获取索引后,我要遍历FREQ列,直到到达索引并获取索引下方和上方的所有行。我被困在这一部分。请帮忙。

示例: d = {'PART_NO': ['KH661-05782', 'ZD661-05428','CH661-04581','661-07970','661-07299'], 'FREQ': [205, 1763,6563,4769,825]} df = pd.DataFrame(data=d)

df=df.sort_values(by=['FREQ'], ascending=[True])

list=df['FREQ'].tolist() index=(len(list)+1)*0.95 index

现在它应该遍历FREQ列以提供与此相同的输出:这意味着它应该在FREQ列中计数,直到到达索引为止,这是我想知道的不使用分位数的方法。

df = df[df.FREQ > df.FREQ.quantile(.95)]

0 个答案:

没有答案