如何使用numpy数组替换pandas DataFrame指定行列的子集数据
替换pandas DataFrame指定子集的实现方案
推荐实现方式
直接对loc选择器赋值即可,无需先提取子集再修改,赋值操作会直接修改原始DataFrame对应位置的数值:
# 直接将匹配维度的numpy数组赋值给目标子集 df.loc[[1,3,5,7,9], ["A", "B", "C"]] = replace_value
注意事项
- 不建议使用
df_subset.values = replace_value的写法:提前提取的df_subset可能是副本而非原始DataFrame的视图,修改副本的数值不会同步到原始df,还可能触发SettingWithCopyWarning警告。 - 如需提前存储目标子集的位置,可以单独记录行索引和列名,后续赋值时直接调用:
# 提前记录目标行列 target_rows = [1,3,5,7,9] target_cols = ["A", "B", "C"] # 后续执行替换 df.loc[target_rows, target_cols] = replace_value
替换结果验证
执行赋值后,可通过以下代码验证替换是否符合预期:
# 提取替换后的子集和目标数组对比 result = df.loc[[1,3,5,7,9], ["A", "B", "C"]] print((result.to_numpy() == replace_value).all()) # 输出为True即说明替换成功
内容的提问来源于stack exchange,提问作者Denny Chen
相关产品推荐
相关产品推荐

