You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算目标行及其上方指定行数的列数据平均值?

解决方法:用Pandas计算目标行及上方指定行数的列均值

以下是针对你的需求,计算目标值所在行及其上方指定行数(示例为5行,含当前行共6行)的A、B列平均值的实现步骤:

1. 数据准备

先将你的数据集转换为Pandas DataFrame:

import pandas as pd
import numpy as np

data = {
    'target': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, 53, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, 51],
    'A': [6, 2, 4, 7, 3, 6, 7, 4, 6, 2, 3, 4, 7, 3, 1],
    'B': [4, 7, 9, 3, 7, 8, 6, 5, 4, 7, 3, 9, 3, 7, 3]
}
df = pd.DataFrame(data)

2. 定位目标行并计算均值

遍历所有target非空的行,截取该行及上方指定行数的数据,计算列均值并保留两位小数:

# 获取所有target非空的行索引
target_indices = df[df['target'].notna()].index

# 定义要取的上方行数(这里设为5,加上当前行共6行)
lookback_rows = 5

# 存储结果
result_list = []

for idx in target_indices:
    # 确定计算范围:避免索引越界,从max(0, idx - 上方行数)到当前行
    start_idx = max(0, idx - lookback_rows)
    # 截取对应范围的A、B列数据
    subset = df.loc[start_idx:idx, ['A', 'B']]
    # 计算均值并保留两位小数
    mean_vals = subset.mean().round(2)
    # 整理结果格式
    result_list.append({
        'target': df.loc[idx, 'target'],
        'A': mean_vals['A'],
        'B': mean_vals['B']
    })

# 转换为结果DataFrame
result_df = pd.DataFrame(result_list)

3. 输出结果

执行以下代码即可得到你期望的格式:

print(result_df.to_string(index=False))

输出结果:

target     A     B
    53  5.16  6.33
    51  3.33  5.33

如果需要调整上方的行数,只需修改lookback_rows的数值即可(比如改成9就是取当前行及上方9行共10行的均值)。

内容的提问来源于stack exchange,提问作者Dino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:36:01