在Pandas中,我有一个类似于
indices = df.dateColumn.apply(holidays.index.searchsorted)
df['nextHolidays'] = holidays.index[indices]
df['previousHolidays'] = holidays.index[indices - 1]
它计算到最近假日的距离并将其存储为新列。 searchsorted
http://pandas.pydata.org/pandas-docs/version/0.18.1/generated/pandas.series.searchsorted.html 对Pandas来说是一个很好的解决方案,因为这给了我下一个假期的索引,而没有一个高算法复杂度并行化Pandas应用例如,这种方法比并行循环快得多。
如何在spark或hive中实现这一点?
1条答案
按热度按时间vc9ivgsu1#
这可以使用聚合来完成,但是这种方法的复杂度要比pandas方法高。但是您可以使用udf获得类似的性能。它不会像Pandas那么优雅,但是:
假设假日数据集:
以及数据框中2016年的数据集:
udf可以使用Pandas
searchsorted
但需要在遗嘱执行人身上安装Pandas。相反,您可以这样使用计划python:可与
withColumn
: