สาเหตุที่ดาต้าเฟรมเดิมของคุณไม่อัปเดตเนื่องจากการจัดทำดัชนีแบบผูกมัดอาจทำให้คุณแก้ไขสำเนาแทนที่จะเป็นมุมมองของดาต้าเฟรมของคุณ เอกสารให้คำแนะนำนี้:
เมื่อตั้งค่าในวัตถุแพนด้าต้องใช้ความระมัดระวังเพื่อหลีกเลี่ยงสิ่งที่เรียกว่าการทำดัชนีแบบล่ามโซ่
คุณมีทางเลือกไม่กี่ทาง: -
loc
+ การสร้างดัชนีบูลีน
loc
อาจใช้สำหรับการตั้งค่าและรองรับบูลีนมาสก์:
df.loc[df['my_channel'] > 20000, 'my_channel'] = 0
mask
+ การสร้างดัชนีบูลีน
คุณสามารถกำหนดให้กับซีรี่ส์ของคุณ:
df['my_channel'] = df['my_channel'].mask(df['my_channel'] > 20000, 0)
หรือคุณสามารถอัปเดตซีรีส์ของคุณได้:
df['my_channel'].mask(df['my_channel'] > 20000, 0, inplace=True)
np.where
+ การสร้างดัชนีบูลีน
คุณสามารถใช้ NumPy โดยกำหนดชุดเดิมของคุณเมื่อเงื่อนไขของคุณไม่เป็นที่พอใจ อย่างไรก็ตามสองโซลูชันแรกนั้นสะอาดกว่าเนื่องจากมีการเปลี่ยนแปลงเฉพาะค่าที่ระบุอย่างชัดเจน
df['my_channel'] = np.where(df['my_channel'] > 20000, 0, df['my_channel'])