-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例について
downvote ????? – farhawa
一般的なカップルは何を意味しますか? DataFrameには、(v2、v3)のペア((5,6)、(5,34)、...)があります。数字の平均はそれ自身です。正確に何を期待していたのですか? – ayhan
また、元のDataFrame(各10行)と同じ長さですか? – ayhan