2016-09-14 2 views
1

私は再帰的な代入や練習を避けるために、関数を作成しパイプを渡したい、あるいはpandasにメソッドを適用したいと思います。パンダでdtypeコンバータ機能を作るには?

これは私のデータフレームの例です。

A 
0 1 
1 2 
2 3 
3 4 

パイプメソッドを渡すために私のコンバータ関数を定義しました。

def converter(df,cols,types): 
df.cols=df.cols.astype(types) 
return df 

次に、パイプメソッドに渡します。

df.pipe(converter,cols=df.A,types="str") 

ですが、エラーが発生します。

AttributeError:'DataFrame' object has no attribute 'cols'

このような種類のエラーを回避するにはどうすればよいですか?

+0

それが必要 '[]'のように見えます - 'DF [COLS] =のDF [COLS] .astype(タイプ)' – jezrael

+0

がreply.yourをありがとうございました方法はうまくいきます!私は多くのことを学びました! – Heisenberg

答えて

1

選択した列のため[]を追加必要があります。

df = pd.DataFrame({'A':[1,2,3,4]}) 

print (df) 
    A 
0 1 
1 2 
2 3 
3 4 

def converter(df,cols,types): 
    df[cols]=df[cols].astype(types) 
    return df 

print (converter(df, 'A', float))  
    A 
0 1.0 
1 2.0 
2 3.0 
3 4.0 
+0

だからなぜ[]が必要なのですか?それは私のために同じように見える.... – Heisenberg

+0

私のための厳しい質問。しかし、私たちが 'df.cols'であれば' A'という名前ではなく、 'cols'という名前のカラムを見つけることを意味すると思います。私はより良い説明を見つけようとします。 – jezrael

+0

[this](http://stackoverflow.com/a/38666726/2901002)の最後の段落を確認することができます – jezrael

関連する問題