Pandas 1.4.0+使用at批量赋值触发InvalidIndexError是否为Bug?
Pandas中
at批量赋值升级后报错的原因与解决方案 这不属于Bug,是Pandas 1.4.0版本开始对at方法索引行为严格规范后的预期结果。
原因说明
at方法的设计初衷是快速定位并修改单个元素,仅支持接收标量类型的行/列标签作为索引,不支持布尔掩码、数组这类批量索引方式。- 早期版本(1.2.3~1.3.5)中存在行为宽松的情况,允许用布尔数组通过
at批量赋值,但这属于不符合设计规范的“意外支持”。Pandas 1.4.0及以上版本修正了这个问题,严格执行at的单元素定位逻辑,因此传入布尔掩码时会抛出InvalidIndexError。
正确替代方案
批量修改符合条件的元素,应使用Pandas官方推荐的loc方法:
df.loc[df['b'] == 6, 'b'] = np.nan
内容的提问来源于stack exchange,提问作者sjfleming
相关产品推荐
相关产品推荐

