如何通过对应索引向Pandas列插入/更新值?无需迭代
无需迭代实现DataFrame指定位置赋值的方法
方法一:直接使用loc向量化赋值
这是最直观的实现方式,利用pandas的loc索引器直接完成数据映射:
# 通过df1的index_copy列定位df2的目标行,赋值对应Numeric Value df2.loc[df1['index_copy'], 'Column_to_be_updated'] = df1['Numeric Value']
原理:loc支持传入索引数组作为行选择器,pandas会自动对齐df1['index_copy']中的索引值与df2的行索引,将对应数据写入Column_to_be_updated列的指定位置,未被选中的行保持初始NaN值。
方法二:使用update方法安全更新
如果需要确保只更新df2中已存在的索引(避免df1包含无效索引引发的问题),可以用update方法:
# 将df1转换为以目标索引为索引的Series update_series = df1.set_index('index_copy')['Numeric Value'] # 原地更新df2的目标列,仅处理两者共有的索引 df2['Column_to_be_updated'].update(update_series)
原理:update方法会用传入的Series值覆盖目标列的对应索引位置,仅处理双方共有的索引,不会对df2中不存在的索引做任何操作,安全性更高。
两种方法均为pandas内置的向量化操作,完全避免了循环迭代,效率远高于逐行赋值。
内容的提问来源于stack exchange,提问作者Gorgonzola
相关产品推荐
相关产品推荐

