Pandas如何按zipcode分组求均价后用replace生成pred_price新列
实现方案
你只需要直接用zipcode列调用replace()方法,把你之前聚合得到的zipcode_mprice作为替换映射传入即可,代码如下:
df["pred_price"] = df["zipcode"].replace(zipcode_mprice)
原理说明
你之前分组聚合得到的zipcode_mprice是索引为zipcode编码、值为对应区域平均房价的Series结构,pandas的replace()方法接收Series作为替换参数时,会自动将待替换列中与Series索引匹配的值,替换为索引对应的Series值,刚好满足你按zipcode匹配平均房价的需求。
运行后得到的df结果如下:
| zipcode | price | pred_price |
|---|---|---|
| 100 | 500 | 550.0 |
| 100 | 600 | 550.0 |
| 101 | 800 | 900.0 |
| 101 | 1000 | 900.0 |
补充:如果你没有强制要求必须用
replace(),更通用的同需求实现可以用分组transform方法,代码为df["pred_price"] = df.groupby("zipcode")["price"].transform("mean"),不需要提前单独聚合平均房价Series,一步即可得到结果。
内容的提问来源于stack exchange,提问作者Leandro
相关产品推荐
相关产品推荐

