4

pandasPythonでデータ分析をうまく行うことができると思って、私はちょうど拾いました。これ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

パラメータのセットごとに1つのエントリを含み、これらのパラメータp1p2すべての値の平均を含むフレームを生成したいと思います。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

pandasこれを行う方法は何ですか?元のテーブルをコピーし、異なる(resultおよびrun)列を削除し、インデックスを再作成し、両方をマルチインデックスとして新しいインデックスと再度組み合わせてから、その外側のマルチインデックスレベルの平均メソッドを実行しようとします。それはそれを行う方法ですか?はいの場合、コードでこれらのインデックスを適切に行うにはどうすればよいですか?

4

1 に答える 1

6

groupbyを使用できます(私はあなたのデータフレームをdfと呼んでいます):

df.groupby(['p1', 'p2']).mean()

これにより、MultiIndexDataFrameが生成されます。質問のレイアウトを取得するには、必要な列のみを選択し、インデックスをリセットします。

df.groupby(['p1', 'p2']).mean()['result'].reset_index()
于 2012-11-28T14:04:03.377 に答える