Pandas:计算仅在两列中不同的所有条目的平均值

Ana*_*ory 4 python pandas

我刚刚接受pandas,认为它将使我能够在python中很好地进行数据分析.现在我有一个pandas以下形式的数据框:

pandas.DataFrame({"p1": [1, 1, 2, 2, 3, 3]*2,
                  "p2": [1]*6+[2]*6,
                  "run": [1, 2]*6,
                  "result": xrange(12)})

    p1  p2  result  run
0    1   1       0    1
1    1   1       1    2
2    2   1       2    1
3    2   1       3    2
4    3   1       4    1
5    3   1       5    2
6    1   2       6    1
7    1   2       7    2
8    2   2       8    1
9    2   2       9    2
10   3   2      10    1
11   3   2      11    2
Run Code Online (Sandbox Code Playgroud)

我想生成一个框架,其中包含每个参数集的一个条目p1以及这些参数p2的所有值的平均值result,即

   p1  p2  result
0   1   1     0.5
1   2   1     2.5
2   3   1     4.5
3   1   2     6.5
4   2   2     8.5
5   3   2    10.5
Run Code Online (Sandbox Code Playgroud)

pandas这样做的方法是什么?我会尝试复制原始表,删除不同的列(resultrun),重新索引,将新索引再次组合为多索引,然后运行该外部多索引级别的均值方法.是方式做到这一点,如果是,我如何正确地在代码中做这些事指数?

Mat*_*ohn 6

你可以使用groupby(我已经调用了你的数据帧df):

df.groupby(['p1', 'p2']).mean()
Run Code Online (Sandbox Code Playgroud)

这会产生MultiIndex DataFrame.要获得问题中的布局,请仅选择所需的列并重置索引:

df.groupby(['p1', 'p2']).mean()['result'].reset_index()
Run Code Online (Sandbox Code Playgroud)