Lý do khiến khung dữ liệu ban đầu của bạn không cập nhật là vì việc lập chỉ mục theo chuỗi có thể khiến bạn sửa đổi bản sao thay vì chế độ xem khung dữ liệu của bạn. Các tài liệu đưa ra lời khuyên này:
Khi thiết lập các giá trị trong một đối tượng gấu trúc, phải cẩn thận để tránh những gì được gọi là lập chỉ mục chuỗi.
Bạn có một số lựa chọn thay thế: -
loc
+ Lập chỉ mục Boolean
loc
có thể được sử dụng để thiết lập giá trị và hỗ trợ mặt nạ Boolean:
df.loc[df['my_channel'] > 20000, 'my_channel'] = 0
mask
+ Lập chỉ mục Boolean
Bạn có thể chỉ định cho chuỗi của mình:
df['my_channel'] = df['my_channel'].mask(df['my_channel'] > 20000, 0)
Hoặc bạn có thể cập nhật chuỗi của mình tại chỗ:
df['my_channel'].mask(df['my_channel'] > 20000, 0, inplace=True)
np.where
+ Lập chỉ mục Boolean
Bạn có thể sử dụng NumPy bằng cách gán chuỗi ban đầu của mình khi điều kiện của bạn không được thỏa mãn; tuy nhiên, hai giải pháp đầu tiên sạch hơn vì chúng chỉ thay đổi rõ ràng các giá trị được chỉ định.
df['my_channel'] = np.where(df['my_channel'] > 20000, 0, df['my_channel'])