我有一个包含两列的数据帧,分别是ID
和condition
.ID对应一个用户,该用户可以有多个条件.我想找出那些条件A和条件B的用户,怎么做?
示例数据帧:
ID | 条件 |
---|---|
1 | A |
2 | B |
1 | B |
1 | C |
2 | C |
2 | D |
1 | E |
如果我想获得以A、B为条件的用户,我只需要1作为输出. 如果我想获得以C、D作为条件的用户,我只需要2作为输出. 如果我想获得以B、C作为条件的用户,我需要1和2作为输出.
这些要求在数据帧中表示如下:
sl_no | 条件 |
---|---|
s1 | [A,B] |
s2 | [C,D] |
S3 | [B,C] |
我的try 如下:
df1=df.groupBy('USER_ID').agg(F.collect_set('CONDITION').alias('conditions'))
df2=conditions_data
result=df1.join(df2,F.array_intersection(df1['conditions'],df2['conditions'])==df2['conditions'])
然而,我在结果中看到了一些不一致.我想知道是否有更好的方法来做到这一点.