我有一个由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)))
这确实有效但不是最美观的。还有其他办法吗?