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

Python嵌套for循环生成均值标准差汇总表出错:得到4x4而非2x4表

问题分析与解决

你的代码核心问题是内层循环中每次处理一个收入组时,就把当前未完成的row添加到了data列表里。外层循环遍历2个年龄组,每个年龄组的内层循环会执行2次(对应2个收入组),每次都执行data.append(row),最终data里会被添加4次,生成4行数据。

修正后的代码

把data.append(row)移到内层for循环的外面,确保每个年龄组对应的完整row(包含2个收入组的均值和标准差,共4个数值)只被添加一次:

import numpy as np
import pandas as pd

elasticity = np.random.rand(2,2,1000)
print(elasticity.shape)

income = ['i0','i1']
age_gr= ['<=18','>18']

data=[]
for i in range(len(age_gr)):
    row=[]
    for j in range(len(income)):
        row.append(np.mean(elasticity[i,j,:]))
        row.append(np.std(elasticity[i,j,:]))
    # 内层循环结束后,再把完整的row加入data
    data.append(row)

df = pd.DataFrame(data, index=age_gr, columns=['i0均值','i0标准差','i1均值','i1标准差'])
print(df)

额外优化

可以给DataFrame加上索引和列名,让结果更直观,比如上面代码里的index=age_gr和columns参数,能直接看到每行对应哪个年龄组,每列对应哪个统计量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:27:44