如何在Pandas中遍历指定索引并高效更新列值?
高效更新指定索引行的category列
不用遍历close_index,直接用Pandas的矢量化条件赋值就能高效完成,完全避免循环带来的性能损耗,尤其适合大规模数据集:
方法一:使用apply快速赋值
# 定位到close_index对应的行,根据owncar值设置category df.loc[close_index, 'category'] = df.loc[close_index, 'owncar'].apply(lambda x: 'LRLC' if x == 1 else 'LRHC')
方法二:用numpy.where实现更高性能(超大规模数据推荐)
import numpy as np # 先提取目标行的owncar数据,再批量赋值 owncar_subset = df.loc[close_index, 'owncar'] df.loc[close_index, 'category'] = np.where(owncar_subset == 1, 'LRLC', 'LRHC')
优势说明
- 完全规避Python层面的循环,依托Pandas/Numpy的底层C语言实现处理数据,速度比遍历快数倍甚至数十倍
- 精准只操作
close_index对应的行,不会遍历整个数据集 - 代码简洁直观,后续维护成本低
你之前用df.loc[close_index,'hhinc8']=2更新hhinc8列的操作,和上面的代码可以直接衔接执行,不会影响其他行的数据。
内容的提问来源于stack exchange,提问作者Tallion 22
相关产品推荐
相关产品推荐

