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

如何在pandas中将字符串类型地址列按价格规则转换为整数值

Pandas Address列按价格规则转数值类型方案

你可以根据实际使用场景选择以下两种符合「价格对应规则」的转换方式:


方案1:按地址平均价格排序做顺序编码

编码值和地址的均价正相关,均价越高编码数值越大,同时保留了编码的离散性:

import pandas as pd

# 示例数据集构造,你可替换为自己的数据集读取代码
df = pd.DataFrame({
    'Area': [63, 60, 79, 95, 123],
    'Room': [1,1,2,2,2],
    'Parking': [1,1,1,1,1],
    'Address': ['Shahran', 'Chids', 'Pardis', 'Shahrake', 'Shahrake'],
    'Price': [1850000000, 1850000000, 550000000, 902500000, 7000000000]
})

# 计算各地址的平均价格,按均价升序生成映射字典
addr_mean_price = df.groupby('Address')['Price'].mean().sort_values()
addr_encoding_map = {addr: idx for idx, addr in enumerate(addr_mean_price.index)}

# 应用映射生成新的数值列
df['Address_encoded'] = df['Address'].map(addr_encoding_map)

转换后对应规则示例:

Address平均价格编码值
Pardis5.5e80
Shahrake3.95e91
Chids1.85e92
Shahran1.85e92

方案2:直接用地址平均价格作为编码值

完全贴合价格对应规则,适合后续做房价预测等回归任务:

# 生成地址-均价映射字典
addr_price_map = df.groupby('Address')['Price'].mean().to_dict()

# 应用映射
df['Address_price_encoded'] = df['Address'].map(addr_price_map)

注意:如果是建模场景,为了避免数据泄露,需要用训练集的地址均价统计值去映射测试集,不要直接使用全量数据集的统计结果。


补充:无价格关联的通用标签编码

如果不需要和价格挂钩,只是简单把字符串转离散数值,可以直接用LabelEncoder:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
df['Address_label'] = le.fit_transform(df['Address'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:24:08