在添加新列的同时填写pySpark数据框中的特定行

时间:2019-03-20 10:36:33

标签: dataframe pyspark union

我有一个包含4行和20多个列(日期)的数据框。数据框是我读取并转换为数据框的表。 SUM行包含每个日期的值之和。

+----+-----+-----+
|PR  |date1|date2|......
+----+-----+-----+
| a  | 30  |  17 |......
| b  | 30  |  12 |......
| SUM| 60  |  29 |......
+----+---+-------+

我在此处提交问题后创建了此数据框。由于该表不断填充新数据,因此我希望将新数据添加到该数据框中。
我在pySpark中编码,脚本如下:

from pyspark.sql import functions as F

if df.filter(df.PR.like('SUM')):
    print("**********")
    print("SUM FOUND")
    df = df.union(df.select(df.where(df.index == 'SUM').select('PR'), *[F.sum(F.col(c)).alias(c) for c in df.columns if c != 'PR']))
else:
    df = df.union(df.select(F.lit("SUM").alias("PR"), *[F.sum(F.col(c)).alias(c) for c in df.columns if c != 'PR']))

我想要实现的是,对于任何新日期,请创建一个新列并填写SUM,而无需添加新行。不幸的是,我遇到了错误AttributeError: 'DataFrame' object has no attribute 'index' 有帮助/提示吗?我应该采用其他方法吗?

0 个答案:

没有答案