Orijinal veri çerçevenizin güncellenmemesinin nedeni, zincirleme dizinlemenin , veri çerçevenizin bir görünümü yerine bir kopyayı değiştirmenize neden olabilmesidir. Docs bu tavsiyelerde:
Bir panda nesnesindeki değerleri ayarlarken, zincirleme indeksleme denen şeyden kaçınmak için özen gösterilmelidir.
Birkaç seçeneğiniz var: -
loc
+ Boole endeksleme
loc
değerleri ayarlamak için kullanılabilir ve Boole maskelerini destekler:
df.loc[df['my_channel'] > 20000, 'my_channel'] = 0
mask
+ Boole endeksleme
Serinize şunları atayabilirsiniz:
df['my_channel'] = df['my_channel'].mask(df['my_channel'] > 20000, 0)
Veya dizinizi yerinde güncelleyebilirsiniz:
df['my_channel'].mask(df['my_channel'] > 20000, 0, inplace=True)
np.where
+ Boole endeksleme
Sen edebilirsiniz durumunuz edilir orijinal dizi atayarak numpy kullanmak değil memnun; ancak, ilk iki çözüm, yalnızca belirtilen değerleri açıkça değiştirdikleri için daha temizdir.
df['my_channel'] = np.where(df['my_channel'] > 20000, 0, df['my_channel'])