gpt4 book ai didi

python - 在 Pandas 中如何在移动窗口的基础上计算 'Countif'?

转载 作者:太空狗 更新时间:2023-10-30 03:00:39 25 4
gpt4 key购买 nike

给定

A = pd.DataFrame([[1, 5, -2], [2, 4, -4], [3, 3, -1], [4, 2, 2], [5, 1, 4]],
columns=['A', 'B', 'C'], index=[1, 2, 3, 4, 5])

假设您想滚动计算最近 3 个观察值中 C 列中 < 0 的观察值数量。在 excel 中,您将在指定窗口上滑动一个“countif”计算,所需的结果将是:

D = # of x < 0 on a rolling window basis of size 3

A
Out[79]:
A B C D
1 1 5 -2
2 2 4 -4
3 3 3 -1 3
4 4 2 2 2
5 5 1 4 1

我如何使用 Pandas 以高效的(Pythonic)方式做到这一点?

谢谢

最佳答案

您可以使用 rolling_sum在 bool 值列上:

>>> A["D"] = pd.rolling_sum((A["C"] < 0), 3)
>>> A
A B C D
1 1 5 -2 NaN
2 2 4 -4 NaN
3 3 3 -1 3
4 4 2 2 2
5 5 1 4 1

这是有效的,因为 True ~ 1 和 False ~ 0,我们有

>>> A["C"] < 0
1 True
2 True
3 True
4 False
5 False
Name: C, dtype: bool

关于python - 在 Pandas 中如何在移动窗口的基础上计算 'Countif'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28506255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com