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

Python for循环生成多组同尺寸DataFrame 如何计算对应位置元素标准差

实现方案

你不需要复杂的逻辑,以下是两种可直接落地的实现方式,都可以直接对应你原有代码调整:

方法1:基于numpy实现(推荐,性能更高)

把每次生成的DataFrame存入列表,再堆叠成三维数组后沿df计数维度计算标准差即可,代码如下:

import pandas as pd
import numpy as np

# 存储所有生成的DataFrame
df_container = []

# 对应你原有的循环逻辑,生成5个5x5的DataFrame
for i in range(5):
    current_df = pd.DataFrame(np.random.randint(0,100,size=(5, 5)), columns=[0,1,2,3,4])
    df_container.append(current_df)

# 沿第0维堆叠所有数组,堆叠后shape为(5,5,5),第一维对应不同的DataFrame
stacked_arr = np.stack([df.values for df in df_container], axis=0)
# 沿第一维(DataFrame计数维度)计算标准差,得到的就是对应位置的标准差结果
std_result_arr = stacked_arr.std(axis=0)
# 转换为和原结构一致的DataFrame
std_result_df = pd.DataFrame(std_result_arr, columns=df_container[0].columns, index=df_container[0].index)

print(std_result_df)

方法2:基于MultiIndex实现(符合你之前的思路)

如果你想尝试MultiIndex的写法,可以用pd.concat带keys参数堆叠所有DataFrame后分组计算:

import pandas as pd
import numpy as np

df_container = []
for i in range(5):
    current_df = pd.DataFrame(np.random.randint(0,100,size=(5, 5)), columns=[0,1,2,3,4])
    df_container.append(current_df)

# 堆叠为MultiIndex结构,level=0是每个DataFrame的编号,level=1是原DataFrame的行索引
concat_multi_df = pd.concat(df_container, keys=range(len(df_container)))
# 按原行索引分组,计算每一组同位置的标准差
std_result_df = concat_multi_df.groupby(level=1).std()

print(std_result_df)

补充说明

  • 两种方法输出结果完全一致,numpy方案对于你最大365个96x96的场景性能优势更明显,代码也更简洁。
  • 如果需要计算样本标准差(除以n-1而非n),可以给std方法加参数ddof=1即可,默认ddof=0是总体标准差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 05:06:04