【发布时间】:2019-02-11 21:42:34
【问题描述】:
我想使用 pyspark 创建一个新列,它是前一天销售额的平均值。
考虑这些值在不同的时间戳。
例如转换这个:
| Date | value |
|------------|-------|
| 2019/02/11 | 30 |
| 2019/02/11 | 40 |
| 2019/02/11 | 20 |
| 2019/02/12 | 10 |
| 2019/02/12 | 15 |
到这里
| Date | value | avg |
|------------|-------|------|
| 2019/02/11 | 30 | null |
| 2019/02/11 | 40 | null |
| 2019/02/11 | 20 | null |
| 2019/02/12 | 10 | 30 |
| 2019/02/12 | 15 | 30 |
我的想法:
使用过滤器和聚合函数来获取平均值但它的抛出错误。不知道我哪里做错了。
df = df.withColumn("avg",lit((df.filter(df["date"] == date_sub("date",1)).agg({"value": "avg"}))))
【问题讨论】:
-
你也可以看看这个答案:stackoverflow.com/questions/47622447/…
标签: python apache-spark dataframe pyspark apache-spark-sql