Alasan bingkai data asli Anda tidak diperbarui adalah karena pengindeksan berantai dapat menyebabkan Anda mengubah salinan daripada tampilan bingkai data Anda. The docs memberikan nasihat ini:
Saat menetapkan nilai dalam objek pandas, kehati-hatian harus dilakukan untuk menghindari apa yang disebut pengindeksan berantai.
Anda memiliki beberapa alternatif: -
loc
+ Pengindeksan Boolean
loc
dapat digunakan untuk menyetel nilai dan mendukung topeng Boolean:
df.loc[df['my_channel'] > 20000, 'my_channel'] = 0
mask
+ Pengindeksan Boolean
Anda dapat menetapkan ke seri Anda:
df['my_channel'] = df['my_channel'].mask(df['my_channel'] > 20000, 0)
Atau Anda dapat memperbarui serial Anda di tempat:
df['my_channel'].mask(df['my_channel'] > 20000, 0, inplace=True)
np.where
+ Pengindeksan Boolean
Anda dapat menggunakan NumPy dengan menetapkan rangkaian asli Anda saat kondisi Anda tidak memuaskan; Namun, dua solusi pertama lebih bersih karena hanya mengubah nilai yang ditentukan secara eksplisit.
df['my_channel'] = np.where(df['my_channel'] > 20000, 0, df['my_channel'])