[英]How to rolling non-overlapping window in pandas
我的數據框看起來像:
c1
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
我想找到每 3 行的最小值。 看起來像:
c1 min
0 10 10
1 11 10
2 12 10
3 13 13
4 14 13
5 15 13
6 16 16
7 17 16
並且行數可能不能被 3 整除。我無法通過滾動功能實現它。
如果有默認索引值,則使用整數除以3
並使用min
傳遞給GroupBy.transform
:
df['min'] = df['c1'].groupby(df.index // 3).transform('min')
或者,如果任何index
生成幫助程序np.arange
:
df['min'] = df['c1'].groupby(np.arange(len(df)) // 3).transform('min')
print (df)
c1 min
0 10 10
1 11 10
2 12 10
3 13 13
4 14 13
5 15 13
6 16 16
7 17 16
你也可以這樣做:
>>> df['min'] = df['c1'][::3]
>>> df.ffill().astype(int)
c1 min
0 10 10
1 11 10
2 12 10
3 13 13
4 14 13
5 15 13
6 16 16
7 17 16
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.