Cara memperbaiki: hanya dapat menggunakan aksesor .str dengan nilai string
Kesalahan yang mungkin Anda temui saat menggunakan Python adalah:
AttributeError : Can only use .str accessor with string values!
Kesalahan ini biasanya terjadi ketika Anda mencoba mengganti pola di kolom string dari Pandas DataFrame, tetapi kolom yang Anda kerjakan sebenarnya bukan string.
Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita memiliki panda DataFrame berikut:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
' points ': [6.5, 7.8, 8.0, 9.0, 7.5, 3.4, 6.6, 6.8],
' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})
#view DataFrame
df
team points assists rebounds
0 A 6.5 5 11
1 A 7.8 7 8
2 A 8.0 7 10
3 A 9.0 9 6
4 B 7.5 12 6
5 B 3.4 9 5
6 B 6.6 9 9
7 B 6.8 4 12
Sekarang misalkan kita mencoba mengganti setiap tempat desimal di kolom “poin” dengan spasi:
#attempt to replace decimal in "points" column with a blank
df[' points '] = df[' points ']. str . replace (' . ', '')
AttributeError : Can only use .str accessor with string values!
Kami menerima kesalahan karena kolom “poin” bukan kolom string.
Bagaimana cara memperbaiki kesalahan tersebut
Cara termudah untuk mengatasi kesalahan ini adalah dengan menggunakan fungsi .astype(str) sebelum mencoba mengganti nilai di kolom “poin”:
#replace decimal in "points" column with a blank
df[' points '] = df[' points ']. astype (str). str . replace (' . ', '')
#view updated DataFrame
df
team points assists rebounds
0 A 65 5 11
1 A 78 7 8
2 A 80 7 10
3 A 90 9 6
4 B 75 12 6
5 B 34 9 5
6 B 66 9 9
7 B 68 4 12
Perhatikan bahwa setiap tempat desimal di kolom “poin” telah diganti dan kami tidak menerima kesalahan apa pun karena kami menggunakan fungsi .astype(str) sebelum mencoba mengganti nilai di kolom “poin”.
Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi replace() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:
Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk