Pandas DataFrame如何访问前序行批量计算滚动均值并设置新列值
解决方案
你需要的滑动窗口均值计算可以直接用Pandas内置的rolling算子实现,完全不需要手动编写for循环,底层为C实现的计算逻辑性能远高于Python层面的循环,适合任意规模的数据集。
完整代码
import pandas as pd threshold = 3 mean_size = 5 # 方法1:前4行数据不足5条时,用现有存在的行计算均值 df['IsGood'] = (df['Amount'].rolling(window=mean_size, min_periods=1).mean() > threshold).astype(int) # 方法2:仅当凑够5条数据时才计算,前4行默认赋值为0 # df['IsGood'] = (df['Amount'].rolling(window=mean_size).mean() > threshold).fillna(0).astype(int)
参数说明
window=mean_size:指定滑动窗口的大小为5,每次计算会自动取当前行及之前的4行共5条数据统计,完全匹配你的需求min_periods=1:可选参数,设置窗口内最少需要有1条有效数据就可以计算,适合需要前几行也有返回值的场景;如果要求必须满5行才判断,移除该参数即可,不足5行的位置会返回NaN,后续用fillna(0)统一填充默认值即可
判断结果直接通过布尔值转int的方式得到1/0的IsGood值,不需要单独写df.loc赋值逻辑,代码更简洁。
内容的提问来源于stack exchange,提问作者Shex
相关产品推荐
相关产品推荐

