如何提升pandas索引与赋值速度,快速合并万行级DataFrame
高效合并DataFrame方案
核心实现
你的需求本质是两个表基于Size、Gender两个字段的等值关联,直接使用pandas内置的向量化关联方法merge即可,毫秒到秒级即可完成1万行规模的表关联,完全不需要手动扩表、分组、逐行赋值操作。
核心代码如下:
import pandas as pd # on参数指定关联键,suffixes用来区分两个表重名字段(比如颜色字段) merged_df = pd.merge( left=df1, right=df2, on=["Size", "Gender"], suffixes=("_shirt", "_pants") )
原方案耗时原因
- 逐行
loc赋值属于行级迭代操作,pandas行迭代性能比向量化操作低2到3个数量级 - 手动扩表、多层groupby分组的逻辑完全重复了
merge内置的哈希关联逻辑,额外产生了大量不必要的内存拷贝和计算开销
可选优化
如果只需要保留部分字段,可以在关联前先对两个表做字段裁剪,进一步降低内存占用、提升速度:
# 示例:仅保留需要的字段再关联 df1_filter = df1[["Size", "Gender", "shirt_id", "color", "price"]] df2_filter = df2[["Size", "Gender", "pants_id", "color", "price"]] merged_df = pd.merge(df1_filter, df2_filter, on=["Size", "Gender"], suffixes=("_shirt", "_pants"))
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

