2016-05-31 21 views
-4

私は関数に変数を取らない関数を記述しようとしています。私は通常関数を書くことはしませんが、私が知る限り、私はスクリプトをもっとPythonにして時間を節約しようとしています。引数を関数の属性として渡しますか?

例:私が取得しようとしています何

source = pd.DataFrame(
    { 
     'Name': ['John', 'Mike', 'John', 'John'], 
     'Year': ['1999', '2000', '2000', '2000'], 
     'Message': ['I Love You', 'Will Remember You', 'Love', 'I Love You'] 
    } 
) 

def unstack(df, keyword): 
    d = (df.keyword.str.split(expand=True).stack) 

unstack(source, year) 

は次のとおりです。

d = (df.year.str.split(expand=True).stack) 

私は関数に有効なキーを渡すことは非常に一般的ですけど、私は機能を取得しようとしています引数を取り込み、それをキーとして使用する。

うまくいけばいいと思います。したがって

getattr(df, keyword) 

def unstack(df, keyword): 
    d = getattr(df, keyword).str.split(expand=True).stack 

をしかし、それだけで呼び出し規約のこの部分を作る方が良いでしょう:dfkeyword属性、使用を取得するには

+4

私はあなたが何について話しているか分かりません。 「非変数」とは何ですか? – syntonym

+0

申し訳ありませんが、私は正しい言葉を知らないかもしれません。しかし、この例ではより明確に説明しています。 – BernardL

+3

関数にオブジェクトの "年"属性にアクセスするために単語 "年"を関数に渡したいとお考えですか? – khelwood

答えて

2

unstack(df.year) # suggested convention 

の代わりに

unstack(df, 'year') # practice required by the code above 
+0

を参照してください。レッスンはよく学んだ。 – BernardL

関連する問題