You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Zipcode匹配为df1填充租金列:多值取均值单值直接取

正确实现方案

你的嵌套循环存在两个核心问题:

  • 效率极低:df1有13万行,嵌套循环会产生巨量迭代次数,处理速度慢到离谱
  • 赋值逻辑错误:df1['rent'] = df2['rent']会把df2的rent列直接覆盖到df1,完全没实现按zipcode匹配对应值的需求

用Pandas的分组+合并可以高效解决你的需求,步骤如下:

1. 计算每个zipcode的租金均值

对df2按zipcodes分组,计算每组的rent均值——单条记录的均值就是它本身,多条记录的均值就是你要的平均值,刚好契合需求:

# 按zipcodes分组计算租金均值,得到每个zipcode对应的租金映射
zip_rent_map = df2.groupby('zipcodes')['rent'].mean().reset_index()

2. 将租金数据合并到df1

用左连接把计算好的租金均值匹配到df1的对应行,保留df1所有原始数据:

# 左连接:通过zipcodes列匹配,把rent列合并到df1
df1 = df1.merge(zip_rent_map, on='zipcodes', how='left')

可选:处理未匹配到的情况

如果df1里有df2不存在的zipcode,合并后对应的rent会是NaN,你可以根据需求填充默认值,比如:

# 把未匹配到的rent填充为0(也可以换成其他合理值)
df1['rent'] = df1['rent'].fillna(0)

这个方法完全利用Pandas的向量化操作,处理13万行数据速度极快,逻辑也精准符合你的需求。

内容的提问来源于stack exchange,提问作者R_Sengupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:35:22