2 回答

TA貢獻1876條經驗 獲得超6個贊
很高興看到您在訪問/調用 pandas 數據框時是否遇到問題。
這是基于rolling(win)and的可能解決方案max():
import pandas as pd
d = dict(row = [0,0,0,0,0,0,0,1,0,0,0,0,0,0])
df = pd.DataFrame(d)
win = 6
df['winMax'] = df.rolling(win).max().shift(-win+1)
print(df)
>
row winMax
0 0 0.0
1 0 0.0
2 0 1.0
3 0 1.0
4 0 1.0
5 0 1.0
6 0 1.0
7 1 1.0
8 0 0.0
9 0 NaN
10 0 NaN
11 0 NaN
12 0 NaN
13 0 NaN

TA貢獻1821條經驗 獲得超6個贊
pandasql 可能的解決方案。有沒有辦法避免使用它?
from pandasql import sqldf
df_final = sqldf("""SELECT id, date, target_row,
MAX(target_row) OVER (PARTITION BY id ORDER BY date ROWS BETWEEN CURRENT ROW AND 6 FOLLOWING)
FROM df
""")
添加回答
舉報