我想知道是否有一种方便的方法来计算滚动平均值,以使窗口沿某些非时间日期列移动并汇总其他列的值?
更具体地说,我想在“成功”列中计算True值的比率。窗口应沿着“公司收入”列移动,以便从具有“公司收入” +-当前窗口位置的一些行的行进行汇总。
Pandas具有df.rolling()功能,但我认为这并不适合此类任务。
我目前正在考虑使用“公司收入”列来创建一个新的数据框,以显示我希望窗口继续显示的值。然后我会用.apply() 从原始数据框中过滤数据,该数据包含属于当前“公司收入”窗口的行,计算“成功”为True的比率,并将比率值保存到新数据框中的新列。这种方法似乎很笨拙,我想知道是否还有更好的方法?
我想要的例子:
原始数据框(按公司收入排序,以提高可读性)
'Company revenue' 'Success'
51 False
101 True
151 False
201 True
201 True
301 False
351 False
501 True
601 False
想要的结果,“公司收入”的窗口跨度为100,窗口大小为+ -200
'Company revenue' 'Success rate%'
0 0.33
100 0.6
200 0.43
300 0.5
400 0.6
500 0.25
600 0.5
700 0.5
800 0
900 NaN
如您所见,窗口的大小不必担心所包含的样本数量,而应考虑“公司收入”是否适合当前窗口。
我相信我可以像我之前描述的那样实现上述目标,但是还有更雄辩的方法吗?