PySpark筛选器:AttributeError:'numpy.float32'对象没有属性'_get_object_id'

时间:2020-02-21 00:07:08

标签: pyspark-sql pyspark-dataframes

在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_minlat_maxlng_minlng_max也是浮动的。为什么会出现此错误?

AttributeError: 'numpy.float32' object has no attribute '_get_object_id'

1 个答案:

答案 0 :(得分:0)

似乎您正在传递numpy类型来触发。打印type(lat_min),它输出什么?它必须是纯Python类型<class 'float'>

要将numpy类型转换为python,请调用其.item()方法

lat_min.item()