列max应该是范围内的最大值。
if df['y'] >= 1: #then use y as the window...
目前正在使用:
df['max'] = None
df['max'][df['y']>1] = pd.rolling_max(df['y'], window = df['y']
结果是:
TypeError:无法将系列转换为' int'
x y max
A 1 1
B 1 0
C 1 0
D 1 3
希望如此:
x y max
A 1 1 1
B 1 0
C 1 0
D 1 3 3
帮助将不胜感激。谢谢。
答案 0 :(得分:0)
您所描述的内容并不是滚动窗口的最大值。如果是y
3
行D
,那么您还需要在滚动窗口中包含2行。我想你只是在df.y >= 1
之后的行中元素的最大值。在这种情况下:
df['max'] = df.loc[df.y >= 1].apply(max, axis=1)
print df
x y max
A 1 1 1.0
B 1 0 NaN
C 1 0 NaN
D 1 3 3.0