【发布时间】:2021-12-13 00:13:11
【问题描述】:
我有一个初始数据框
df1 =
+---+---+---+
| A| B| C|
+---+---+---+
| 1| 1| 10|
| 1| 2| 11|
| 1| 2| 12|
| 3| 1| 13|
| 2| 1| 14|
| 2| 1| 15|
| 2| 1| 16|
| 4| 1| 17|
| 4| 2| 18|
| 4| 3| 19|
| 4| 4| 19|
| 4| 5| 20|
| 4| 5| 20|
+---+---+---+
使用 pyspark,我使用一个窗口函数对数据帧进行编码,其中考虑了“A”列并考虑了“B”列的排序。
spec = Window.partitionBy('A').orderBy('B')
df1 = df1.withColumn('D',sum('C').over(spec))
df1.show()
+---+---+---+-----+
| A| B| C| D|
+---+---+---+-----+
| 1| 1| 10| 10.0|
| 1| 2| 11| 33.0|
| 1| 2| 12| 33.0|
| 2| 1| 14| 45.0|
| 2| 1| 15| 45.0|
| 2| 1| 16| 45.0|
| 3| 1| 13| 13.0|
| 4| 1| 17| 17.0|
| 4| 2| 18| 35.0|
| 4| 3| 19| 54.0|
| 4| 4| 19| 73.0|
| 4| 5| 20|113.0|
| 4| 5| 20|113.0|
+---+---+---+-----+
是否可以使用 Pandas Dataframe 进行相同的计算?
我尝试过使用
df['D'] = df.sort_values(['A','B']).groupby(['A', 'B'])['C'].transform('cumsum')
但结果不一样
谢谢
【问题讨论】:
标签: pandas dataframe apache-spark pyspark group-by