pandas window by groupby函数

o7jaxewo  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(109)

我有一个pd Dataframe

pd.DataFrame({'day': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
              'A': [1, 1, 1, 0, 0,0, 1, 1, 0, 0],
              'B': [7, 8, 4, 3, 5, 6, 3, 1, 4, 5],})

我想做一个滑动窗口,只要列的值是1,就找到最大值,一旦值变为0,就找到那些0的最大值。下面是所需输出:

pd.DataFrame({'day': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
               'A': [1, 1, 1, 0, 0,0, 1, 1, 0, 0],
               'B': [7, 8, 4, 3, 5, 6, 3, 1, 4, 5],
               'Output': [8, 8, 8, 6, 6, 6, 3, 3, 5, 5 ]})
mbzjlibv

mbzjlibv1#

通过与移位值和Series.cumsum进行比较来创建A的连续组,然后传递到GroupBy.transformmax

df['Output'] = df.groupby(df.A.ne(df.A.shift()).cumsum())['B'].transform('max')
print (df)
   day  A  B  Output
0    1  1  7       8
1    2  1  8       8
2    3  1  4       8
3    4  0  3       6
4    5  0  5       6
5    6  0  6       6
6    7  1  3       3
7    8  1  1       3
8    9  0  4       5
9   10  0  5       5

相关问题