Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Kaedah Panda Saya `replace()` Berfungsi untuk Penggantian Rentetan Mudah?

Mengapakah Kaedah Panda Saya `replace()` Berfungsi untuk Penggantian Rentetan Mudah?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 09:48:02572semak imbas

Why Isn't My Pandas `replace()` Method Working for Simple String Replacements?

Kaedah Pandas replace() Tidak Berfungsi? Cuba Pembetulan Mudah Ini

Apabila cuba menggantikan rentetan dalam Pandas DataFrame menggunakan kaedah replace(), ada kemungkinan untuk menghadapi isu yang membingungkan apabila tiada penggantian berlaku. Berbeza dengan penggantian yang kompleks, keadaan ini selalunya melibatkan percubaan penggantian yang mudah.

Untuk menggambarkan, mari kita periksa kerangka data berikut:

d = {'color' : pd.Series(['white', 'blue', 'orange']),
   'second_color': pd.Series(['white', 'black', 'blue']),
   'value' : pd.Series([1., 2., 3.])}
df = pd.DataFrame(d)

Apabila kita cuba menggantikan semua kejadian 'putih' dengan NaN, secara mengejutkan, tiada apa yang berlaku:

df.replace('white', np.nan)

Keluaran kekal tidak berubah:

      color second_color  value
0   white        white      1
1    blue        black      2
2  orange         blue      3

Jadi, apa yang berlaku?

Ternyata pengganti() kaedah melakukan carian penggantian penuh secara lalai. Untuk mendayakan penggantian separa, kita perlu menetapkan parameter regex kepada Benar:

df.replace('white', np.nan, regex=True)

Sebagai alternatif, kita boleh menggunakan kaedah str.replace(), yang menawarkan lebih kawalan ke atas proses penggantian:

df['color'].str.replace('white', np.nan)

Petua Bonus: Jika anda mempertimbangkan untuk menggunakan inplace=True untuk melakukan penggantian di tempat, pastikan anda memahami kaveatnya.

Atas ialah kandungan terperinci Mengapakah Kaedah Panda Saya `replace()` Berfungsi untuk Penggantian Rentetan Mudah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn