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

使用Geopy计算距离后,pd.qcut分箱操作失败的问题求助

Geopy计算距离后pd.qcut分箱报错的解决办法

先揪出代码里的明显错误

你写的qcut代码里用了df_nyc.Aftermath,但前面计算距离的是data['Distance'],变量名和列名完全不匹配,这绝对是报错的核心原因之一,先把这个改过来。

确保Distance列是纯数值类型(剥离Geopy关联)

虽然你说distance.distance(...).km返回的是float64,但有时候可能因为数据里的空值、非数值导致类型隐性异常,直接强制转成纯净的float类型就行:

# 计算时直接强制转换
data['Distance'] = data[['Start_Lat', 'Start_Lng', 'End_Lat', 'End_Lng']].apply(
    lambda x: float(distance.distance((x[0],x[1]), (x[2],x[3])).km), 
    axis=1
)
# 或者事后统一转换
data['Distance'] = data['Distance'].astype('float64')

修正qcut的正确写法

把qcut里的错误变量改成对应的data['Distance']:

data["DisBucket"] = pd.qcut(data['Distance'], q=[0, 0.3, 0.7, 1.0], labels=['LOW', 'MEDIUM', 'HIGH'])

额外处理:清理异常值

如果Distance列里有NaN或者无穷大的值,qcut也会报错,先做数据清理:

# 删掉空值行
data = data.dropna(subset=['Distance'])
# 或者用中位数填充空值(根据你的业务场景选)
data['Distance'] = data['Distance'].fillna(data['Distance'].median())

验证步骤

  1. 先查类型:print(data['Distance'].dtype),确认是float64
  2. 看统计信息:print(data['Distance'].describe()),检查有没有异常值
  3. 小批量测试:取前100行数据跑qcut,快速验证是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:35:44