我使用的是pySpark
,并设置了包含两列的 Dataframe ,这两列表示每日资产价格,如下所示:
ind = sc.parallelize(range(1,5))
prices = sc.parallelize([33.3,31.1,51.2,21.3])
data = ind.zip(prices)
df = sqlCtx.createDataFrame(data,["day","price"])
我在应用df.show()
时得到:
+---+-----+
|day|price|
+---+-----+
| 1| 33.3|
| 2| 31.1|
| 3| 51.2|
| 4| 21.3|
+---+-----+
这很好,我希望有另一列包含price列的每日收益,例如(price(day2)-price(day1))/(price(day1))
经过大量的研究,我被告知通过应用pyspark.sql.window
函数可以最有效地完成这一点,但我看不出如何实现。
2条答案
按热度按时间olqngx591#
你可以使用lag函数调用previous day列,并添加额外的列,从这两个列中获取实际的每日回报,但是你可能需要告诉spark如何对数据进行分区和/或命令它进行延迟,如下所示:
下面是对Window functions in Spark的详细介绍。
xytpbqjk2#
Lag函数可以帮助您解决您的用例。