Python 熊猫中的滑动窗口分组

Python 熊猫中的滑动窗口分组,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,如何使用groupby为Pandas中的计算创建滑动窗口?假设我有一个如下所示的数据帧: df = pd.DataFrame({'type': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'data': [1,10,2,4,3,4,5,6]}) df type data 0 A 1 1 A 10 2 A 2 3 A 4 4 B 3 5 B 4 6 B

如何使用groupby为Pandas中的计算创建滑动窗口?假设我有一个如下所示的数据帧:

df = pd.DataFrame({'type': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'data': [1,10,2,4,3,4,5,6]})


df
  type  data
0    A     1
1    A     10
2    A     2
3    A     4
4    B     3
5    B     4
6    B     5
7    B     6
对于数据框中的每一个
类型
,我想以滑动比例确定第一行和第三行之间的标准偏差(并且只有那些,忽略第二行中的数据)。这意味着对于A,我希望使用这些行来查找第一个std dev:

  type  data
0    A     1    <----
1    A     10
2    A     2    <----
3    A     4
编辑:滚动似乎不起作用。我只想要用于
std()
的端点,而不是整个窗口。例如,第一个计算应该是
std([1,2])
,因为我们将只查看索引0和2,而忽略索引1中的值。

rolling

重复的:可能解决方案是相同的(可能),但在通过滑动窗口搜索pandas groupby时未出现该结果。此外,现在滚动似乎不起作用,因此可能不是输出不正确的重复。我希望在索引0和1处看到一个值,而不是在2和3处。看起来在末尾添加一个.shift(-2)会起作用。如果有更好的方法,让我知道实际上@piRSquared,这不起作用,我的错误是选择了坏的示例数据。rolling函数使用整个窗口进行std()计算,我只想使用索引0和2,似乎rolling只做它所说的,一个滚动计算,使用窗口中的所有内容。我只想使用极值/端点,如果这只是使用正确的值,我希望std为~1.41。我更新了这个问题,所以数字更极端。
df.groupby('type')。rolling(2.std()
给出了
~1.41
  type  data
0    A     1    
1    A     10   <----
2    A     2
3    A     4   <----
df.groupby(df.type).sliding_window(slide=2).std()
df.groupby('type').rolling(3).std()

        data
type        
A    0   NaN
     1   NaN
     2   1.0
     3   1.0
B    4   NaN
     5   NaN
     6   1.0
     7   1.0