2016-08-19 15 views
3

"サブセット"という名前のdataFrameがあり、コードは次のとおりです。 pdはpandasのニックネームです。私はby = lambda x: lambda y: getattr(y, x)の意味を理解できません。"by = lambda x:lambda y:getattr(y、x)"はどういう意味ですか?

pivot = pd.pivot_table(subset, values='count', rows=['date'], cols=['sample'], fill_value=0) 
by = lambda x: lambda y: getattr(y, x) 
grouped = pivot.groupby([by('year'),by('month')]).sum() 
+0

[なぜPythonラムダが便利なのですか?](0120-338-801) – Mephy

+1

'year'と' month'は列です'group '= pivot.groupby([' year '、' month '])。sum()' –

+0

'year'と' month'は同じ列ではないと推測します。コードに初めて表示され、うまく動作します。サブセットに 'date'という名前の列があり、それらの関係を見つけることを試みています。@ StefanoPotter – zhql0907

答えて

2

by = lambda x: lambda y: getattr(y, x)以下と等価です:

def by(x): 
    def getter(y): 
     return getattr(y, x) 
    return getter 

getattr(a, b)aという名前のオブジェクトから名前bを持つ属性を取得します。

したがってby('bar')は、オブジェクトから属性'bar'を返す関数を返します。

by('bar')(foo)は、getattr(foo, 'bar')を意味し、おおよそfoo.barです。

それでも問題が解決しない場合は、まだ問題のある部分をお知らせください。

関連する問題