我正在尋找 B 列“groupedby”日期(A 列值)的“滾動”.max() .min()。但是,訣竅是它應該再次從每一行開始,所以我不能使用諸如 df['MAX'] = df['B'].rolling(10).max().shift(-9) 之類的東西(couse我需要在組結束的地方結束它 - 每個組可以有不同的行數)或簡單地 groupby A 列(因為我需要滾動 max min 并在每行開始并在每組結束的地方結束 - 這意味著對于第 1 行列 C是 B 列中第 1-4 行的最大值,對于第 2 行,C 列是 B 列中第 2-4 行的最大值,對于第 3 行,C 列是 B 列中第 3-4 行的最大值,對于第 4 行,C 列是最大值列 B 等的第 4 行等)。希望它有意義 - 列 C 和 D 是期望的結果。謝謝大家。
A B C(max) D(min)
1 2016-01-01 0 7 0
2 2016-01-01 7 7 3
3 2016-01-01 3 4 3
4 2016-01-01 4 4 4
5 2016-01-02 2 5 1
6 2016-01-02 5 5 1
7 2016-01-02 1 1 1
8 2016-01-03 1 4 1
9 2016-01-03 3 4 2
10 2016-01-03 4 4 2
11 2016-01-03 2 2 2
uj5u.com熱心網友回復:
df['C_max'] = df.groupby('A')['B'].transform(lambda x: x[::-1].cummax()[::-1])
df['D_min'] = df.groupby('A')['B'].transform(lambda x: x[::-1].cummin()[::-1])
A B C(max) D(min) C_max D_min
1 2016-01-01 0 7 0 7 0
2 2016-01-01 7 7 3 7 3
3 2016-01-01 3 4 3 4 3
4 2016-01-01 4 4 4 4 4
5 2016-01-02 2 5 1 5 1
6 2016-01-02 5 5 1 5 1
7 2016-01-02 1 1 1 1 1
8 2016-01-03 1 4 1 4 1
9 2016-01-03 3 4 2 4 2
10 2016-01-03 4 4 2 4 2
11 2016-01-03 2 2 2 2 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465441.html
