Получить счет, когда при появлении новой записи - PullRequest
0 голосов
/ 10 мая 2019

У меня есть Dataframe с идентификатором и датой. Мне нужно подсчитать новую запись в каждом столбце и столбец count в Dataframe.

ID Date
A   1
B   1
C   1
A   1
A   1
B   2

У меня есть этот тип Dataframe, и я хочу добавить столбец и считать запись, когда они происходят, и обновить значение счетчика, и окончательный Dataframe мне выдаст как:

ID Date  count 
A   1     1
B   1     1
C   1     1
A   1     2
A   1     3
B   2     1

Я объединил два столбца и попытался подсчитать вхождение значения:

ID Date  merge_col 
A   1     A1
B   1     B1
C   1     C1
A   1     A1
A   1     A1
B   2     B1

Ожидаемый фрейм данных

ID Date  count 
A   1     1
B   1     1
C   1     1
A   1     2
A   1     3
B   2     1

1 Ответ

0 голосов
/ 10 мая 2019

Для этого вам нужно count над window по группе ID и Date

Ниже приведен код для этого -

df = sqlContext.createDataFrame([
        ['A',   1],
        ['B',   1],
        ['C',   1],
        ['A',   1],
        ['A',   1],
        ['B',   2]
    ],
    ['ID', 'Date']
)
df.show()
+---+----+
| ID|Date|
+---+----+
|  A|   1|
|  B|   1|
|  C|   1|
|  A|   1|
|  A|   1|
|  B|   2|
+---+----+

#Import required Libraries
from pyspark.sql import functions as F
from pyspark.sql.window import Window as W
import sys

df.withColumn(
    "count",
    F.count(F.lit(1)).over(W.partitionBy(["ID", "Date"]).rowsBetween(-sys.maxsize, 0))
).show()

+---+----+-----+
| ID|Date|count|
+---+----+-----+
|  B|   1|    1|
|  C|   1|    1|
|  A|   1|    1|
|  A|   1|    2|
|  A|   1|    3|
|  B|   2|    1|
+---+----+-----+

заказ для Id & Date будет случайным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...