问题
对分层索引行执行数值运算的有效方法是什么?
问题
我有一个超过 1gb 的大型数据框,按年份和国家代码进行索引。一个小子集如下所示。每个国家每年都有多个观测值。我想取每个国家一年内观察的平均值并返回一个整体平均值。理想的最终结果将是一个按年份索引的数据框,然后是每个国家的年平均值。
从概念上讲,我想做类似的事情:
df.ix[:,['x3yv_E', 'x3yv_D', 'x1yv_E', 'x1yv_D']].groupby(df.year).groupby(level=1).apply(lambda x: np.mean(x))
继承人的数据集:
x3yv_E x3yv_D x1yv_E x1yv_D
year
2003 12 0.000000 0.000000 0.000000 0.000000
34 0.009953 0.001400 0.007823 0.000950
12 0.010210 0.001136 0.008333 0.000722
34 0.011143 0.006319 0.007520 0.006732
72 0.018791 0.016717 0.018808 0.015206
2004 0 0.009115 0.000000 0.010243 0.000000
38 0.009059 0.000932 0.010042 0.000573
53 0.009618 0.001152 0.010724 0.000729
70 0.000000 0.000000 0.000000 0.000000
70 0.020655 0.018411 0.012965 0.011640
我试过的
由于数据框的大小很大,我希望避免循环并多次复制数据框,就像上述两个问题的解决方案所建议的那样。
关于有效解决方案的任何想法?谢谢参观!