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

Python如何对DataFrame每列指定行按Excel逻辑计算标准差

实现方案

前提说明

我们先做通用场景的约定,你可以根据自己的实际数据调整规则:

  • 你已提前生成和目标DataFrame df 索引对齐的布尔掩码is_highlight,取值为True的行对应Excel中的高亮行
  • 偏移规则默认设定为:第i列(列索引从0开始计数)的统计起始行相较第0列向下偏移i位,仅统计偏移后范围内的高亮行数据

循环实现代码

import pandas as pd

# --------------- 替换为你自己的实际数据 ---------------
# 示例DataFrame
df = pd.DataFrame({
    'col1': [1,2,3,4,5,6,7],
    'col2': [2,3,4,5,6,7,8],
    'col3': [3,4,5,6,7,8,9],
    'col4': [4,5,6,7,8,9,10]
})
# 示例高亮行掩码:第1、2、4、5行为高亮行
is_highlight = pd.Series([False, True, True, False, True, True, False], index=df.index)
# -----------------------------------------------------

# 初始化存储标准差结果的Series
std_results = pd.Series(dtype='float64', index=df.columns)

# 遍历所有列完成计算
for col_idx, col_name in enumerate(df.columns):
    # 生成当前列的有效行筛选规则:行索引>=列索引(实现向下偏移)+ 是高亮行
    valid_row_mask = (df.index >= col_idx) & is_highlight
    # 计算标准差,ddof参数可对齐Excel逻辑:ddof=1对应样本标准差STDEV.S,ddof=0对应总体标准差STDEV.P
    std_results[col_name] = df.loc[valid_row_mask, col_name].std(ddof=1)

# 输出结果
print(std_results)

规则调整说明

  • 如果需要固定窗口大小滑动,比如每列仅统计偏移后的连续3行,可以把筛选规则修改为:
    valid_row_mask = (df.index >= col_idx) & (df.index < col_idx + 3) & is_highlight
  • 如果你的偏移方向或步长有特殊要求,只要调整df.index的判断逻辑即可
  • 如果高亮行是按其他规则(比如数值大于阈值、属于特定分组)筛选的,修改is_highlight的生成逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:48:02