私は数字が'12 .5% 'のようなテキストとして保存されたデータフレーム "b"を持っています。 一つの列には、次のとおりです。Pythonのdf pandasへの適用関数 - 属性エラー
1 NaN
2 NaN
3 1.2%
4 0.6%
5 NaN
6 1.4%
7 0.1%
8 NaN
9 5.1%
10 2.5%
11 89.1%
12 NaN
Name: Idaho, dtype: object
私は各列に適用する関数を書いてきました:
def sinPorc(tbl):
return float(tbl.replace('%', ''))
が、私はそれを適用しようとすると、私が取得:
b.Idaho.apply(sinPorc)
AttributeError: 'float' object has no attribute 'replace'
私はまた、テーブルの例を作成し、関数を適用しましたが、この場合は機能しました:
ejemplo=pd.DataFrame({'A':['1.3%', 'NaN'],
'B':['1.3%', '0.7%']})
ejemplo.A.apply(sinPorc)
と私は期待した結果だ:私は、元のテーブルに関数を適用することはできませんなぜ私にはわからない
1.3
NaN
Name: A, dtype: float64
を。何が問題なのか、それを解決するために何をすべきですか?
ありがとうございました。 NaNの
np.NaN.replace('%', '')
...これを試してみてください文字列が、float値np.NaN
なかったし、あなたが同じエラーになりますので、
'def'関数で' float(str(tbl).replace ') 'を試してください。あなたの行要素を' replace'の 'string'としてキャストする必要があります。働く –
ありがとう@NickilMaveli、それはいいです。元の関数がなぜ2番目のテーブルで機能したのか分かりません。 – GabyLP
列のような音にはすでに浮動小数点値が含まれています。私は値を文字列型として、そして次に浮動小数点型として複製しようとしました。インデックス0の値が 'NaN'ではないと仮定して、' type(b.Idaho [0]) 'とタイプしてデバッグすると役に立ちます。 –