- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想用滑动窗口计算总和或其他计算。例如,我想计算 A 为真的当前位置的最后 10 个数据点的总和。有没有办法做到这一点 ?有了这个,它没有返回我期望的值。
我把期望值和计算放在一边。
谢谢
In [63]: dt['As'] = pd.rolling_sum( dt.Val[ dt.A == True ], window=10, min_periods=1)
In [64]: dt
Out[64]:
Val A B As
0 1 NaN NaN NaN
1 1 NaN NaN NaN
2 1 NaN NaN NaN
3 1 NaN NaN NaN
4 6 NaN True NaN
5 1 NaN NaN NaN
6 2 True NaN 1 pos 6 = 2
7 1 NaN NaN NaN
8 3 NaN NaN NaN
9 9 True NaN 2 pos 9 + pos 6 = 11
10 1 NaN NaN NaN
11 9 NaN NaN NaN
12 1 NaN NaN NaN
13 1 NaN True NaN
14 1 NaN NaN NaN
15 2 True NaN 3 pos 15 + pos 9 + pos 6 = 13
16 1 NaN NaN NaN
17 8 NaN NaN NaN
18 1 NaN NaN NaN
19 5 True NaN 4 pos 19 + pos 15 = 7
20 1 NaN NaN NaN
21 1 NaN NaN NaN
22 2 NaN NaN NaN
23 1 NaN NaN NaN
24 7 NaN True NaN
25 1 NaN NaN NaN
26 1 NaN NaN NaN
27 1 NaN NaN NaN
28 3 True NaN 5 pos 28 + pos 19 = 8
这就差不多了
import numpy as np
import pandas as pd
dt = pd.read_csv('test2.csv')
dt['AVal'] = dt.Val[dt.A == True]
dt['ASum'] = pd.rolling_sum( dt.AVal, window=10, min_periods=1)
dt['ACnt'] = pd.rolling_count( dt.AVal, window=10)
In [4]: dt
Out[4]:
Val A B AVal ASum ACnt
0 1 NaN NaN NaN NaN 0
1 1 NaN NaN NaN NaN 0
2 1 NaN NaN NaN NaN 0
3 1 NaN NaN NaN NaN 0
4 6 NaN True NaN NaN 0
5 1 NaN NaN NaN NaN 0
6 2 True NaN 2 2 1
7 1 NaN NaN NaN 2 1
8 3 NaN NaN NaN 2 1
9 9 True NaN 9 11 2
10 1 NaN NaN NaN 11 2
11 9 NaN NaN NaN 11 2
12 1 NaN NaN NaN 11 2
13 1 NaN True NaN 11 2
14 1 NaN NaN NaN 11 2
15 2 True NaN 2 13 3
16 1 NaN NaN NaN 11 2
17 8 NaN NaN NaN 11 2
18 1 NaN NaN NaN 11 2
19 5 True NaN 5 7 2
20 1 NaN NaN NaN 7 2
21 1 NaN NaN NaN 7 2
22 2 NaN NaN NaN 7 2
23 1 NaN NaN NaN 7 2
24 7 NaN True NaN 7 2
25 1 NaN NaN NaN 5 1
26 1 NaN NaN NaN 5 1
27 1 NaN NaN NaN 5 1
28 3 True NaN 3 8 2
但是 ASum 和 ACount 中的所有值都需要 NaN,其中 A 是 NaN这是这样做的方法吗?
最佳答案
您只是在求和,还是这是一个更复杂问题的简化示例?
如果它只是一个总和,那么您可以混合使用 fillna()
以及 True
和 False
就像 1 和np.sum
中的 0:
In [8]: pd.rolling_sum(dt['A'].fillna(False), window=10,
min_periods=1)[dt['A'].fillna(False)]
Out[8]:
6 1
9 2
15 3
19 2
28 2
dtype: float64
关于python - 如何在滑动窗口中使用 pandas rolling_sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21264538/
我想用滑动窗口计算总和或其他计算。例如,我想计算 A 为真的当前位置的最后 10 个数据点的总和。有没有办法做到这一点 ?有了这个,它没有返回我期望的值。 我把期望值和计算放在一边。 谢谢 In [6
我想在 DataFrame 上使用 pandas.rolling_sum 函数,使用每个窗口可用的任何数据对窗口求和(所以不要返回 NaN 当窗口超出可用数据时)。以下是一些示例数据: import
我有一个应用程序需要计算 Pandas 多级数据帧的滚动总和,我想找到一种方法来缩短处理时间。 mul_df() 是创建演示多级数据帧的函数。 import itertools import nump
我有一个带有常规样本的简单 dataFrame: dates = pd.date_range('20150101', periods=6) df = pd.DataFrame([1,2,3,4,5,6
我有一个包含以下列的数据框: (Pdb) self.df.columns Index([u'distinct_id', u'event_name', u'item_id', u'player_time
为什么会这样: df2['rollsum'] = df2.groupby('ID')['yes'].transform(pd.rolling_sum, window=30, min_periods=1
我是一名优秀的程序员,十分优秀!