【发布时间】:2022-01-25 07:27:08
【问题描述】:
from pyspark.sql.window import Window
import mpu
from pyspark.sql.functions import udf
from pyspark.sql.functions import lag
from math import sin, cos, sqrt, atan2
windowSpec = Window.partitionBy("UserID").orderBy(asc("Timestamp"))
df14=df.withColumn("newLatitude",lag("Latitude",1).over(windowSpec)) \
.withColumn("newLongitude",lag("Longitude",1).over(windowSpec)) \
.drop('AllZero'," Date","Time","Altitude")
df15=df14.orderBy(col("UserID").asc(),col("Timestamp").asc())
df16=df15.na.drop()
from geopy.distance import geodesic
origin = (30.172705, 31.526725) # (latitude, longitude) don't confuse
dist = (30.288281, 31.732326)
print(geodesic(origin, dist).meters)
df17=df16.withColumn("distance",geodesic((col("Latitude"), col("Longitude")), (col("newLatitude"), col("newLongitude"))).meters)
df17.show()
我尝试使用延迟函数将前一组纬度和经度放在原始df之后,但是当我尝试计算这两组纬度和经度之间的距离时,它变得像:
/usr/local/spark/python/pyspark/sql/column.py in nonzero(self) 688 689 def 非零(自我): --> 690 raise ValueError("Cannot convert column to bool: please use '&' for 'and', '|' for 'or', " 第691章 692 bool = 非零
ValueError:无法将列转换为布尔值:请使用 '&' 表示 'and'、'|'在构建 DataFrame 布尔表达式时,为 'or','~' 为 'not'。 我真的不明白发生了什么。
【问题讨论】:
-
这能回答你的问题吗? ValueError: Cannot convert column into bool
-
对不起,我看到了那个页面,那里的答案无法解决我的问题,但我有些方法设法用不同的答案解决它,我将在下面发布
标签: pyspark