我有一个数据帧,比如:
+---+---+---+---+----------+
|key| c1| c2| c3| date|
+---+---+---+---+----------+
| k1| -1| 0| -1|2015-04-28|
| k1| 1| -1| 1|2015-07-28|
| k1| 1| 1| 1|2015-10-28|
| k1| 1| 1| -1|2015-12-28|
| k2| -1| 0| 1|2015-04-28|
| k2| -1| 1| -1|2015-07-28|
| k2| 1| -1| 0|2015-10-28|
| k2| 1| -1| 1|2015-11-28|
+---+---+---+---+----------+
创建A
的代码:
data = [('k1', '-1', '0', '-1','2015-04-28'),
('k1', '1', '-1', '1', '2015-07-28'),
('k1', '1', '1', '1', '2015-10-28'),
('k1', '1', '1', '-1', '2015-12-28'),
('k2', '-1', '0', '1', '2015-04-28'),
('k2', '-1', '1', '-1', '2015-07-28'),
('k2', '1', '-1', '0', '2015-10-28'),
('k2', '1', '-1', '1', '2015-11-28')]
A = spark.createDataFrame(data, ['key', 'c1', 'c2','c3','date'])
A = A.withColumn('date',A.date.cast('date'))
我想得到日期,此时c3列的值第一次发生了变化(按日期升序排列),预期结果如下:
+---+---+----------+
|key| c3| date|
+---+---+----------+
| k1| 1|2015-07-28|
| k2| -1|2015-07-28|
+---+---+----------+
这显然是一个窗口函数的工作:
结果是:
下面是我使用自定义项的解决方案。你知道吗
输出
相关问题 更多 >
编程相关推荐