I have a spark dataframe like below. (just an example. My real data has millions of rows):

df = pd.DataFrame({'ZIP1': ['50069', '50069', '50704', '50704', '52403', '52403'],
              'ZIP2': ['50704', '52403', '50069', '52403', '50069', '50704'],
              'STATE': ['IA', 'IA', 'IA', 'IA', 'IA', 'IA'],
              'REGION': ['MIDWEST', 'MIDWEST', 'MIDWEST', 'MIDWEST', 'MIDWEST', 'MIDWEST'] } )
sdf = spark.createDataFrame(df)

    ZIP1    ZIP2    STATE   REGION
0   50069   50704   IA  MIDWEST
1   50069   52403   IA  MIDWEST
2   50704   50069   IA  MIDWEST
3   50704   52403   IA  MIDWEST
4   52403   50069   IA  MIDWEST
5   52403   50704   IA  MIDWEST

如果ZIP1ZIP2列中的两个zipcode是相同的组合,则需要删除一行.例如,row 0row 2,zipcodes只是相同的组合,但顺序相反.我需要删除row 0row 2.同样,移除row 1row 4....

有人知道如何在pyspark中实现这一点吗?需要Pyspark解决方案.如果有人能同时提供pyspark和python的解决方案,那就更好了.谢谢

推荐答案

Pandas 解决方案

cols = ['ZIP1', 'ZIP2']
df[cols] = np.sort(df[cols], axis=1)
df.drop_duplicates(subset=cols)
Result
    ZIP1   ZIP2 STATE   REGION
0  50069  50704    IA  MIDWEST
1  50069  52403    IA  MIDWEST
3  50704  52403    IA  MIDWEST

Pyspark解决方案

cols = ['ZIP1', 'ZIP2']
sdf.withColumn('arr', F.array_sort(F.array(*cols))).drop_duplicates(['arr']).drop('arr')
Result
| ZIP1| ZIP2|STATE| REGION|
+-----+-----+-----+-------+
|50069|50704|   IA|MIDWEST|
|50069|52403|   IA|MIDWEST|
|50704|52403|   IA|MIDWEST|
+-----+-----+-----+-------+

在这两种解决方案中,主要思想是对第ZIP1列和第ZIP2列中的值进行排序,然后根据排序后的值删除重复项

Python相关问答推荐

Discord.py -

将CSS链接到HTML文件的问题

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

Autocad使用pyautocad/comtypes将对象从一个图形复制到另一个图形

如何防止html代码出现在quarto gfm报告中的pandas表之上

Python:从目录内的文件导入目录

操作布尔值的Series时出现索引问题

Regex用于匹配Python中逗号分隔的AWS区域

如何在Python中从html页面中提取html链接?

python3中np. divide(x,y)和x/y有什么区别?'

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

如何获取给定列中包含特定值的行号?

如何在Python中实现高效地支持字典和堆操作的缓存?

安装PyTorch时出现CondaVerificationError

JAX是否保存了JIT编译函数的jaxpr?

在Pandas 数据框中,可以有一些多索引列和一些单索引列吗?

如何在Python中在PDF上画一条垂直线?

Discord.py按钮后出现的 Select 菜单

如何使用libclang';S Python绑定获取返回类型和参数类型的完全限定名?

Microsoft Autogen中的流功能