gpt4 book ai didi

python - 在pyspark中创建两个时间戳之间的时间戳数组

转载 作者:行者123 更新时间:2023-12-01 00:18:03 26 4
gpt4 key购买 nike

我的 pyspark 数据框中有两个时间戳列。我想创建第三列,其中包含两个时间戳之间的时间戳小时数组。

enter image description here

这是我为此编写的代码..

# Creating udf function
def getBetweenStamps(st_date, dc_date):
import numpy as np
hr = 0
date_list = []
runnig_date = st_date
while (dc_date>runnig_date):
runnig_date = st_date+timedelta(hours=hr)
date_list.append(runnig_date)
hr+=1
dates = np.array(date_list)
return dates
udf_betweens = F.udf(getBetweenStamps, ArrayType(DateType()))

# Using udf function
orders.withColumn('date_array', udf_betweens(F.col('start_date'), F.col('ICUDischargeDate'))).show()

但是这显示了错误

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我认为函数的输入是作为两个数组输入的,而不是作为导致错误的两个日期时间。有没有办法解决?还有其他方法可以解决这个问题吗?

非常感谢。

最佳答案

从 udf 返回 numpy 数组时出现错误。您只需返回 date_list 即可。

def getBetweenStamps(st_date, dc_date):
import numpy as np
hr = 0
date_list = []
runnig_date = st_date
while (dc_date>runnig_date):
runnig_date = st_date+timedelta(hours=hr)
date_list.append(runnig_date)
hr+=1
return date_list
udf_betweens = F.udf(getBetweenStamps, ArrayType(DateType()))

测试上述功能:

df = spark.sql("select current_timestamp() as t1").withColumn("t2", col("t1") + expr("INTERVAL 1 DAYS"))
df.withColumn('date_array', udf_betweens(F.col('t1'), F.col('t2'))).show()

关于python - 在pyspark中创建两个时间戳之间的时间戳数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59168824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com