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

基于标记DataFrame,用PR对应区间均值填充指定区间行

解决方案:基于标记区间填充均值到新DataFrame

完整实现代码

import pandas as pd
import numpy as np

# 示例输入数据
flag = pd.DataFrame({'col1': [np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan],
                   'col2': [np.nan,1,-1,np.nan,1,np.nan,np.nan,np.nan,np.nan,np.nan,-1],
                   'col3': [np.nan,np.nan,np.nan,1,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,-1],
                   'col4': [np.nan,np.nan,np.nan,np.nan,np.nan,1,np.nan,-1,np.nan,np.nan,np.nan]
                   })

PR = pd.DataFrame({'col1': [81,81.3,80.7,81.5,81,80.4,80.3,81,79.5,80.7],
                   'col2': [80.9,81.6,81.2,81.7,80.9,79.7,79.3,79.1,79,77.5],
                   'col3': [81.1,81.3,81,81.6,80.8,79.5,79.2,78.8,78.8,77.4],
                   'col4': [80.1,80.6,79.9,80.4,80.4,79.3,79,78.8,78.4,77]
                   })

# 对齐两个DataFrame的行数(示例中flag多一行,去除冗余行)
flag = flag.iloc[:-1].reset_index(drop=True)

# 初始化结果DataFrame,与PR同形状,默认填充NaN
result = pd.DataFrame(np.nan, index=PR.index, columns=PR.columns)

# 逐列处理标记区间
for col in flag.columns:
    flag_col = flag[col]
    # 获取所有区间起点(flag=1的索引)和终点(flag=-1的索引)
    start_points = flag_col[flag_col == 1].index
    end_points = flag_col[flag_col == -1].index
    
    # 按顺序配对起点与终点,处理每个区间
    for start, end in zip(start_points, end_points):
        # 计算PR对应区间的均值,保留两位小数
        interval_avg = PR[col].loc[start:end].mean().round(2)
        # 将均值填充到结果的对应区间
        result[col].loc[start:end] = interval_avg

# 打印结果
print(result)

步骤说明

  1. 数据对齐:示例中flag比PR多一行冗余数据,通过iloc[:-1]去除,确保两个DataFrame结构一致。
  2. 结果初始化:创建与PR行列数完全相同的空DataFrame,初始值设为NaN。
  3. 区间处理:
    • 对每一列单独提取标记值,筛选出区间的起点(值为1)和终点(值为-1)的索引。
    • 按顺序配对起点和终点,计算PR对应区间内的均值。
    • 将计算得到的均值填充到结果DataFrame的对应区间位置。

输出验证

运行代码后将得到符合预期的输出:

col1   col2   col3   col4
0   NaN    NaN    NaN    NaN
1   NaN  81.40    NaN    NaN
2   NaN  81.40    NaN    NaN
3   NaN    NaN  79.44    NaN
4   NaN  79.25  79.44    NaN
5   NaN  79.25  79.44  79.03
6   NaN  79.25  79.44  79.03
7   NaN  79.25  79.44  79.03
8   NaN  79.25  79.44    NaN
9   NaN  79.25  79.44    NaN

内容的提问来源于stack exchange,提问作者Pedro de Sá

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:01:09