使用Boolean indexing修改Pandas DataFrame数值无效果该如何解决?
问题原因
- 运算符优先级错误:Python 中位运算符
&的优先级高于比较运算符>,你编写的筛选条件没有给df['FiscalPeriod'] >1单独加括号,实际执行时会先计算(df['VendorAccount'] == 729616) & df['FiscalPeriod'],再将运算结果和1做大小比较,最终得到的筛选结果全为False,没有匹配到任何需要修改的行,因此数据集没有变化。 - 链式索引潜在问题:你使用的
df['LCC'][筛选条件]属于链式索引写法,pandas可能返回数据的副本而非原数据的视图,修改副本不会作用到原数据集,还会触发SettingWithCopyWarning警告。
正确实现代码
df.loc[(df['VendorAccount'] == 729616) & (df['FiscalPeriod'] > 1), 'LCC'] = True
上述写法使用loc直接操作原数据的视图,同时给两个筛选条件分别加括号,确保逻辑运算顺序符合预期,即可得到你想要的修改结果。
内容的提问来源于stack exchange,提问作者FH_Mad_SWF
相关产品推荐
相关产品推荐

