我有以下两个级别的pyspark Dataframe :
df1
client date dateM1 dateM3 dateP3
123 9-2021 8-2021 6-2021 12-2021
124 8-2022 7-2022 5-2022 11-2022
125 2-2022 1-2022 11-2021 5-2022
df2
client date imp con
123 5-2021 2 0
123 6-2021 4 1
123 10-2021 1 0
124 11-2022 1 1
124 10-2022 2 0
125 8-2022 1 1
我想找到一个客户的总印象和转换,如果他们属于范围1(dateM 3到dateM 1)和范围2(日期到dateP 3)。我想避免交叉连接两个集合来比较日期。
结果数据应该是这样的:
df
client imp_Range1 con_Range1 imp_Range2 con_Range2
123 4 1 1 0
124 0 0 3 1
如果没有imp和con落在给定的范围内,它不应该是最终集合的一部分
注:日期为字符串格式(M-yyyy)
1条答案
按热度按时间li9yvcax1#
导入必要的包
1.将日期从StringType转换为DateType
1.使用条件语句联接并执行groupby求和
输出: