2017-03-04 8 views
4

私はパンダで、次のデータフレームを持っている...はAttributeError:「関数」オブジェクト一切属性「合計」パンダを持っていない

+-----------------------+ 
|    | count | 
+-----------------------+ 
| group  |  | 
+-----------------------+ 
| 11-   | 99435 | 
+-----------------------+ 
| Bachelor+ | 64900 | 
+-----------------------+ 
| Just 12  | 162483 | 
+-----------------------+ 
| Some College | 61782 | 
+-----------------------+ 

私は、次のコードを実行したいが、私はエラーを取得しています。..私は次のエラーを取得しています。

death_2013['percent_of_total'] = death_2013.count.apply(
    lambda x: (x/death_2013.count.sum())) 

...

AttributeError: 'function' object has no attribute 'apply' 

は私がdeath_2013.dtypesと確認しましたはint64です。私はコードに何が間違っているのか分かりません。

+0

countは列名です。私は 'death_2013.count.apply'または' death_2013 ['count']。apply'のいずれかを行うことができますが、どれもうまくいかないようです。奇妙なのは、私がこの一連のコードを別のデータセットで扱っていることです。 – Gilbert

+0

エラーメッセージは、それが関数オブジェクトであることを示しています –

+0

なぜ 'death_2013 ['count']?apply()'? –

答えて

2

pandas.DataFrame.countメソッドがあります。このメソッドは、列の名前をシャドーイングしています。このため、このエラーメッセージが表示されます。バインドされたメソッドcountにアクセスしているため、明らかに機能しません。

['name_of_column']の構文を使用して両方の場所のcount列にアクセスし、今後列の名前を付けるときはDataFrameのメソッド名に注意する必要があります。

death_2013['percent_of_total'] = death_2013['count'].apply(
    lambda x: (x/death_2013['count'].sum()))
+0

むしろ変数名を変更します。私はあなたの解決の直前にそれを理解します。私が疑うものを確認していただきありがとうございます。 – Gilbert

+0

@Gilbertよろしくお願いします!この構文を使用する際の欠点の1つであり、新しい列を設定しようとしています。 – miradulo

1

問題は、データフレームにcountメソッドがあることです。あなたが代わりに構文

death_2013['count'].apply() 

を使うという名前の列countapply()を実行したい場合は、列の名前を変更。

関連する問題