Заполните конкретную строку в фрейме данных PySpark при добавлении новых столбцов - PullRequest
0 голосов
/ 20 марта 2019

У меня есть датафрейм, который состоит из 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']))

Что я хочудля достижения этой цели, для любой новой даты создайте новый столбец и заполните сумму, не добавляя новые строки.К сожалению, я получаю ошибку AttributeError: 'DataFrame' object has no attribute 'index' Любая помощь / подсказка?Должен ли я придерживаться другого подхода?

...