2016-08-10 16 views
2

以下の2つの呼び出しの間に異なる動作がある理由を知ってもらえますか?ありがとうございました。Python Pandas groupby-apply strange behavior

In [34]: df 
Out[34]: 
    A B C 
0 1 0 0 
1 1 7 4 
2 2 9 8 
3 2 2 4 
4 2 2 1 
5 3 3 3 
6 3 3 2 
7 3 5 7 

In [35]: g = df.groupby('A') 

In [36]: g.apply(max) 
Out[36]: 
    A B C 
A   
1 1 7 4 
2 2 9 8 
3 3 5 7 

In [37]: g.apply(lambda x: max(x)) 
Out[37]: 
A 
1 C 
2 C 
3 C 
dtype: object 
+3

'max(df)'と 'df.max()'の違いを調べてください。私はこれが同じ行動だと思う。 –

+0

@PaulHこれは答えだったはずです。 –

+0

@AmiTavory ehh。私が持っているよりも、私はそれを説明してくれました。 –

答えて

3

短い答えは - あなたはおそらく

df.groupby('A').max() 

長い答えをしたい - maxは、任意の反復可能なの最大を発見し、一般的なPythonの関数です。 DataFrameを反復する列があるので、python maxを呼び出すだけで、 "最大"列が見つけられます。これは、2番目の場合に起こります。

最初のケース - pandasには、g.apply(sum)のようなものがg.sum()に変わるインターセプトロジックがあります。

+0

10kにおめでとう! – bernie