迭代并应用MultiIndex级别上的函数,降低迭代级别

时间:2014-05-04 18:13:10

标签: python pandas

我有一个由MultiIndex索引的系列,其中第一级包含实验的重复次数,例如

   L 
0  8    -0.751486
   10   -0.511793
   12   -0.371917
   ...
1  8    -0.750675
   10   -0.511673
   12   -0.371600
   ...

我有一个函数analyze,它计算给定实验的结果;例如analyze(data.loc[0])计算第一个实验的结果。

我希望能够编写类似result = data.groupby(level=0).apply(analyze)的内容,但这会失败,因为analyze不希望获得索引的第一级。

目前我正在使用像

这样的蛮力方法
result = pd.concat({i: analyze(data.loc[i]) 
                    for i in range(len(data.index.levels[0]))})

使用groupby是否有更好的方法?像

这样的东西
data.groupby(level=0).apply(analyze, drop_keys=True)

修改

根据Bren和Karl的评论,我使用groupby使用lambda消除了第一级:

data.groupby(level=0).apply(lambda s: analyze(s.reset_index(0, drop=True)))

这确实有效但不是最美观的。还有其他办法吗?

0 个答案:

没有答案