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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *