Pandas -获取包含X百分比数据的前n行



我有一个数据帧,它是group-by的结果,已经按每个组内的值(从高到低)排序:

Group Record ID Value
A       1        10
2        8
3        6
B       4        9
5        7
6        5
...
Z       97       11
98       9
99       7
10000 rows x 1 columns

我希望能够找到前n行,其值之和等于组总数的x% %。

基本上,我正在尝试探索并确定覆盖最大总量数据(按值测量)所需的最小记录量。例如,也许前800条记录的对应值加起来占总价值的90%,而第801条记录只能多贡献0.5%,因此800将是这里的截止计数。

是否有一种优雅的方式来做到这一点?

我最终使用下面的代码生成了两个总和字段,并得到了我可以开始探索的数据。

value_pcts = table.groupby(level=0).apply(lambda x: 100 * x / float(x.sum()))
table = pd.concat([table, value_pcts], axis=1)
table = table_new.reset_index()
table['value_cumsum'] = table.groupby(['A'])['value'].cumsum()
table['pct_cumsum'] = table.groupby(['A'])['percentage'].cumsum()

我仍然在想是否有更整洁的方法。

最新更新