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

如何遍历Pandas DataFrame多列批量计算并构建单行结果DataFrame

Pandas批量处理W8_前缀列的加权均值计算及统计量分析
  • 先预先计算重复用到的统计量,减少重复计算(提升效率关键):
    提前算出每个Benthic_Mo分组的SHAPE_Area总和,以及全局总面积Area_sum,这俩是所有W8_列计算的公共依赖。

    # 预计算分组面积总和与全局总面积
    area_grouped = gdf.groupby('Benthic_Mo')['SHAPE_Area'].sum()
    Area_sum = gdf['SHAPE_Area'].sum()
    # 计算分组权重:每组面积占总面积的比例
    weights = area_grouped / Area_sum
    
  • 筛选所有以W8_开头的目标列:

    w8_cols = [col for col in gdf.columns if col.startswith('W8_')]
    
  • 批量计算每个W8_列的B1值:
    遍历目标列,对每列计算分组均值,再和权重相乘后求和,结果存入字典备用。

    results = {}
    for col in w8_cols:
        col_group_mean = gdf.groupby('Benthic_Mo')[col].mean()
        b1_value = (weights * col_group_mean).sum()
        results[col] = [b1_value]  # 用列表格式方便后续转单行DataFrame
    
  • 构建单行结果DataFrame并计算方差/标准差:

    import pandas as pd
    
    # 转换为单行DataFrame
    result_df = pd.DataFrame(results)
    
    # 计算所有结果的方差和标准差
    total_variance = result_df.iloc[0].var()
    total_std_dev = result_df.iloc[0].std()
    
    # 可选:把统计量追加到结果DataFrame中
    result_df.loc['variance'] = total_variance
    result_df.loc['std_dev'] = total_std_dev
    

注意:预先计算权重的方式,避免了循环中重复调用groupby计算面积和,数据量越大,效率提升越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:39:44