subtract 差集
返回自身未包含在其他值中的每个值。
x = sc.parallelize(['A','A','B'])
y = sc.parallelize(['D','C','A'])
z = x.subtract(y)
print('x 和 y 的差集是: ', z.collect())
>>> x 和 y 的差集是: ['B']
subtract
的行为是删除左数据帧中的行的所有实例(如果存在于右数据帧中)。
数据帧,nsdf
,我想对它进行5%的采样。nsdf
看起来像这样:
col1
8
7
7
8
7
8
8
7
(... and so on)
样本sdf
是这样的 sdf = nsdf.sample(0.05)
然后我想从nsdf
中删除sdf
中的行。现在,我想我可以使用nsdf.subtract(sdf)
,但这将删除nsdf
中与sdf
中任何行匹配的所有行。例如,如果sdf
包含
col1
7
8
nsdf
中的每一行都将被删除,因为它们都是7或8。有没有办法只删除sdf
中出现的7/8(或任何其他)的数量?更具体地说,在这个例子中,我希望最后得到一个nsdf
,它包含相同的数据,但少了一个7和一个8。
exceptAll 差集
Data Setup
# 原始
df = spark.createDataFrame([(7,), (8,), (7,), (8,)], ("col1", ))
# 待删除列
df1 = spark.createDataFrame([(7,), (8,)], ("col1", ))
# exceptAll删除
df.exceptAll(df1).show()
# 结果
+----+
|col1|
+----+
| 7|
| 8|
+----+
PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理_zuoseve01的博客-CSDN博客_pyspark在进行dataframe处理时如何删除指定行
PySpark 之 连接变换 union、intersection、subtract、cartesian_G_scsd的博客-CSDN博客