如何使用Python Pandas计算间隔回溯行的平均值
实现方案
逻辑说明
按需求可选择两种规则对齐方式,均满足仅最后3行保留有效值的要求:
- 规则1(匹配最后3行都有有效值的预期):对每行取
当前行col1值、往前6行col1值、往前12行col1值,三者求平均 - 规则2(严格按字面“每次向前回溯6行”取3个值):对每行取
往前6行col1值、往前12行col1值、往前18行col1值,三者求平均
完整代码
import pandas as pd # 初始化示例数据 data = {'col1': [12, 13, 5, 2, 12, 12, 13, 23, 32, 65, 33, 52, 63, 12, 42, 65, 24, 53, 35]} df = pd.DataFrame(data) # ---------- 规则1实现(推荐,符合最后3行都有值的预期)---------- df['skipped_mean'] = (df['col1'] + df['col1'].shift(6) + df['col1'].shift(12)) / 3 # 清空最后3行以外的所有值 df.loc[df.index[:-3], 'skipped_mean'] = pd.NA # ---------- 规则2实现(严格按字面回溯)---------- # df['skipped_mean'] = (df['col1'].shift(6) + df['col1'].shift(12) + df['col1'].shift(18)) / 3
结果说明
- 规则1的最后3行计算结果:
- 倒数第3行:23
- 倒数第2行:39
- 倒数第1行:37
- 规则2仅倒数第1行有有效值,结果约为29.33
- 后续如果数据行数变化,只需将
df.index[:-3]中的3修改为你需要保留有效值的行数即可
内容的提问来源于stack exchange,提问作者KubiK888
相关产品推荐
相关产品推荐

