我试图显示列中的最大值,同时按日期列对行进行分组。
所以我试过这个密码
maxVal = dfSelect.select('*')\
.groupBy('DATE')\
.agg(max('CLOSE'))
但是输出看起来是这样的:
+----------+----------+
| DATE|max(CLOSE)|
+----------+----------+
|1987-05-08| 43.51|
|1987-05-29| 39.061|
+----------+----------+
我想有如下输出
+------+---+----------+------+------+------+------+------+---+----------+
|TICKER|PER| DATE| TIME| OPEN| HIGH| LOW| CLOSE|VOL|max(CLOSE)|
+------+---+----------+------+------+------+------+------+---+----------+
| CDG| D|1987-01-02|000000|50.666|51.441|49.896|50.666| 0| 50.666|
| ABC| D|1987-01-05|000000|51.441| 52.02|51.441|51.441| 0| 51.441|
+------+---+----------+------+------+------+------+------+---+----------+
因此,我的问题是如何更改代码,使其具有所有列的输出和聚合的“close”列?
我的数据方案如下:
root
|-- TICKER: string (nullable = true)
|-- PER: string (nullable = true)
|-- DATE: date (nullable = true)
|-- TIME: string (nullable = true)
|-- OPEN: float (nullable = true)
|-- HIGH: float (nullable = true)
|-- LOW: float (nullable = true)
|-- CLOSE: float (nullable = true)
|-- VOL: integer (nullable = true)
|-- OPENINT: string (nullable = true)
1条答案
按热度按时间kqqjbcuj1#
如果您希望对原始Dataframe中的所有列进行相同的聚合,那么可以执行以下操作:,
如果你想要多个聚合,那么你可以这样做,
如果只希望聚合其中一列并将其添加到原始Dataframe中,那么可以在聚合之后执行selfjoin
也可以使用窗口功能