我有一个 pyspark
如下所示的Dataframe:
import pandas as pd
foo = pd.DataFrame({'date_col':['2010-02-27','2010-01-20','2010-01-20','2010-01-21','2010-01-21','2010-02-21','2010-02-22','2010-02-23','2010-02-24','2010-02-25','2010-02-26','2010-01-20','2010-01-21','2010-02-20'], 'group':['a','a','a','a','a','a','a','a','a','a','a','b','b','b']})
我想创建一个 week
列,这将是一个索引,它每7个有序的 date_col
由 group
.
生成的Dataframe应如下所示:
foo = pd.DataFrame({'date_col':['2010-02-27','2010-01-20','2010-01-20','2010-01-21','2010-01-21','2010-02-21','2010-02-22','2010-02-23','2010-02-24','2010-02-25','2010-02-26','2010-01-20','2010-01-21','2010-02-20'], 'group':['a','a','a','a','a','a','a','a','a','a','a','b','b','b'],
'week':[2,2,1,1,1,1,1,1,1,1,1,1,1,1]})
有什么好主意我可以这样做吗 pyspark
?
更新
再解释一下逻辑。
基本上,操作可分为以下步骤:
订购 foo
在 date_col
分组依据 group
创建 temp_index
列,该列将对 date_col
由 group
创建 week
列将是 div
的 temp_index
与 7
1条答案
按热度按时间wwodge7n1#
你可以用
dense_rank
把等级除以7。在除法之前需要先减去1,因为在sql中,秩从1开始,而不是从0开始。