我有两个数据帧
df_fruit= spark.createDataFrame([("Apple", "10:00"),("Orange", "12:35"),("Apple", "11:36"),("Apple","12:48"),("Pear","11:00")], ["Fruit", "Time"])
此数据框存储何时应该吃水果。
我还有一个额外的数据框,可以存储一个人吃水果的时间,以及摄入了多少cals和kg's。
df_calories= spark.createDataFrame([("Apple", "10:02", "86g", "1cal"),("Orange", "12:39", "75g", "14cal"),("Apple", "10:04", "9g", "47cal"),("Apple","12:46", "25g", "9cal"),("Orange","12:33", "75g", "2cal")], ["Fruit", "Time", "Weight", "Calories"])
我需要通过Fruit加入两个表,但也需要5分钟的时间间隔。由于摄入灵活5分钟,从推荐时间开始。
这是预期的结果。
+------+-----+-----+------+--------+
| Fruit| Time| Time|Weight|Calories|
+------+-----+-----+------+--------+
| Apple|10:00|10:02| 86g| 1cal|
| Apple|10:00|10:04| 9g| 47cal|
|Orange|12:35|12:39| 75g| 14cal|
|Orange|12:35|12:33| 75g| 2cal|
| Apple|11:36| null| null| null|
| Apple|12:48|12:46| 25g| 9cal|
| Pear|11:00| null| null| null|
+------+-----+-----+------+--------+
联接类型应为左联接,即必须保留所有df_fruit
答案 0 :(得分:2)
假设时间间隔固定为5分钟,我们可以为df_fruit中的每个水果创建开始时间和结束时间,并将它们加入,
mtch.Item(0).Value
希望这有帮助!