Python中批量为DataFrame各列生成累计标准差计算列的实现方法
实现方案
你可以直接使用Pandas的expanding扩展窗口接口批量完成计算,该接口会自动取从数据集首行到当前行的所有值作为统计窗口,完美匹配你的累计计算需求。
完整实现代码
import pandas as pd # 1. 批量计算所有列的累计标准差 # ddof=0代表计算总体标准差,若需要样本标准差可改为ddof=1 sd_result = df.expanding(min_periods=1).std(ddof=0) # 2. 按规则重命名新列 sd_result.columns = [f'SD{col}' for col in sd_result.columns] # 3. 单行数据的标准差默认返回NaN,按要求填充为0 sd_result = sd_result.fillna(0) # 4. 合并计算结果到原DataFrame df = pd.concat([df, sd_result], axis=1)
精简写法
如果需要更简洁的代码,可以合并为单步实现:
df = pd.concat([df, df.expanding(1).std(ddof=0).add_prefix('SD').fillna(0)], axis=1)
结果验证
可以单独提取A列和对应的累计标准差列,检查计算是否符合预期:
print(df[['A', 'SDA']].head())
内容的提问来源于stack exchange,提问作者Jewel_R
相关产品推荐
相关产品推荐

