在PySpark中,我想过滤这样的spark数据帧
temp_df = df1.filter(df1.latitude_float.between(lat_min, lat_max) & df1.longitude_float.between(lng_min, lng_max))
df1
是通过spark.sql
构建的数据帧,以下是printSchema
|-- vin_nbr: string (nullable = true)
|-- timstm_hm: string (nullable = true)
|-- latitude: string (nullable = true)
|-- longitude: string (nullable = true)
|-- make: string (nullable = true)
|-- model: string (nullable = true)
|-- timstm_hm_timestamp: timestamp (nullable = true)
|-- latitude_float: float (nullable = true)
|-- longitude_float: float (nullable = true)
如您所见,纬度和经度的确是浮动的。 lat_min
,lat_max
,lng_min
和lng_max
也是浮动的。为什么会出现此错误?
AttributeError: 'numpy.float32' object has no attribute '_get_object_id'
答案 0 :(得分:0)
似乎您正在传递numpy类型来触发。打印type(lat_min)
,它输出什么?它必须是纯Python类型<class 'float'>
要将numpy类型转换为python,请调用其.item()
方法
lat_min.item()