Python如何基于条件修改pandas DataFrame指定列值并解决相关报错
解决方法
问题原因
- 逻辑缺陷:原有代码仅通过
state == "CANCELLED"筛选待修改行,未排除Activity值为created的行,导致这部分行的原值被错误覆盖 - 警告触发原因:你当前操作的
df是之前从其他DataFrame切片生成的视图,而非独立的DataFrame对象,pandas检测到修改视图可能无法同步到原数据,因此抛出SettingWithCopyWarning
修复步骤
- 首先生成独立的DataFrame副本,消除警告
df = df.copy()
- 调整筛选条件,仅修改同时满足
state为CANCELLED、且Activity不为created的行
df.loc[ (df["state"] == "CANCELLED") & (df["Activity"] != "created"), "Activity" ] = "Cancelled"
结果验证
可执行以下代码核对修改结果:
# 查看所有state为CANCELLED的行的两列值,确认created的行未被修改 print(df.loc[df["state"] == "CANCELLED", ["state", "Activity"]])
内容的提问来源于stack exchange,提问作者Alde Joshua Wibowo
相关产品推荐
相关产品推荐

