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
相关产品推荐
相关产品推荐

