我有一个数据帧,它是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()
我仍然在想是否有更整洁的方法。