我有ID和Date的数据框,我必须在数据框的每一列和计数列中计数新条目。
ID Date
A 1
B 1
C 1
A 1
A 1
B 2
我有这种类型的数据框,我想添加列并在记录出现时对记录进行计数,并更新计数值,最终的数据框我将给出为:
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
答案 0 :(得分:0)
为此,您需要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
的