2016-08-06 12 views
-1

pandas.DataFrameを1列、2列、3列にグループ化し、「グループ」の平均を計算する必要があります。以下のようなpandas.DataFrame.groupbyが実際にどのように働くか

何か:

col1 col2 col3 col4 
0 A  17 R  3 
1 B  5  T  7 
2 F  25 R  11 
3 A  33 R  15 
4 B  17 T  19 
5 F  25 R  23 
6 F  25 E  27 

グループ1つの列によって:COL1はここ

私は結果が(それが数値ではないとCOL3がドロップされた)になりたい:

    col2   col4 
    col1 = A | 0 (17+33)/2 (3+15)/2 
    col1 = B | 1 (5+17)/2  (7+19)/2 
    col1 = F | 2 (25+25+25)/2 (11+23)+27/2 

列1列:col1 & col3

       col2   col4 
    col1 = A & col3 = R | 0 (17+33)/2 (3+15)/2 
    col1 = B & col3 = T | 1 (5+17)/2  (7+19)/2 
    col1 = F & col3 = R | 2 (25+25)/2 (11+23)/2 
    col1 = F & col3 = E | 4 25   27 

また、3列の列ごとに同じことがあります。

私はpandas.DataFrame.groupby().mean()メソッドを見つけましたが、どのように正確に動作するかはわかりません。例えば

、この単純なデータフレームのために:groupby機能の仕事を行なったし、どのように正確に

In [1]: df 
Out[2]: 
     v1 v2 v3 v4 
    0 0 17 2 3 
    1 4 5 6 7 
    2 8 25 10 11 
    3 12 33 14 15 
    4 16 17 18 19 
    5 20 25 22 23 
    6 24 25 26 27 
    7 28 29 30 31 
    8 32 5 34 35 
    9 36 5 38 39 
In [2]: df.groupby(["v2"]).mean() 
Out[2]: 
      v1   v3   v4 
v2         
5 24.000000 26.000000 27.000000 
17 8.000000 10.000000 11.000000 
25 17.333333 19.333333 20.333333 
29 28.000000 30.000000 31.000000 
33 12.000000 14.000000 15.000000 

## For this first case it's ok... 

In [3]: df.groupby(["v2","v3"]).mean() 
Out[3]: 
     v1 v4 
v2 v3   
5 6 4 7 
    34 32 35 
    38 36 39 
17 2 0 3 
    18 16 19 
25 10 8 11 
    22 20 23 
    26 24 27 
29 30 28 31 
33 14 12 15 

この結果は(アウト[3])(オリジナルデータフレームと同じ長さを持っていない理由としてありデータフレーム内の通信カップル(v2、v3)はありませんか?ここで一番上にあなたの最初の2例について

+0

downvote ????? – farhawa

+0

一般的なカップルは何を意味しますか? DataFrameには、(v2、v3)のペア((5,6)、(5,34)、...)があります。数字の平均はそれ自身です。正確に何を期待していたのですか? – ayhan

+0

また、元のDataFrame(各10行)と同じ長さですか? – ayhan

答えて

1

は、あなたが探している構文は次のとおりです。

>>>df.groupby(['col1'])['col2', 'col4'].mean() 

     col2  col4 
col1     
A  25 9.000000 
B  11 13.000000 
F  25 20.333333 

>>>df.groupby(['col1','col3'])['col2', 'col4'].mean() 

      col2 col4 
col1 col3    
A R  25  9 
B T  11 13 
F E  25 27 
    R  25 17 

んあなたが探しているグループを得るのを助けること?

関連する問題