我有两个PySpark DataFrame,df 1和df 2,有一个名为“conditions”的列,其中包含字符串列表。我想根据“conditions”列中的公共元素连接这些DataFrame,其中一个DataFrame中的整个列表与另一个DataFrame中的整个列表匹配。
下面是数据结构的一个简化示例:
df1:
| ID|条件|
| --|--|
| User1| [“ABC”,“苹果”]|
| User2| [“香蕉”,“橙子”]|
| User3| [“樱桃”,“梨”]|
DF2
| 条件|重量|
| --|--|
| [“ABC”,“苹果”]| 10 |
| [香蕉]| 21 |
| [“樱桃”]| 15 |
| [“草莓”]| 30 |
| [“香蕉”,“橙子”]| 20 |
我想创建一个新的DataFrame,其中包含df 1和df 2中的行,其中“conditions”列表完全匹配。在本例中,预期输出为:
| ID|条件|重量|
| --|--|--|
| User1| [“ABC”,“苹果”]| 10 |
| User2| [“香蕉”,“橙子”]| 20 |
我试过了,但结果是错误的。
第一个月
1条答案
按热度按时间z31licg01#
由于您正在比较两个数组列,因此可能会由于数组中项目的顺序不匹配而导致不正确的结果...例如
['a', 'b'] != ['b', 'a']
。为了解决这个问题,我们必须对数组中的不同元素进行排序,然后使用排序后的数组作为连接条件个字符