PySpark实战:DataFrame移除部分数据

来自CloudWiki
跳转至: 导航搜索

介绍

上面的drop操作是从列上进行数据的移除,

但是在某些情况下,可能需要从一个DataFrame的数据中移除掉另外一个DataFrame中的数据。

代码


import findspark
findspark.init()
##############################################
from pyspark.sql import SparkSession
spark = SparkSession.builder \
        .master("local[1]") \
        .appName("RDD Demo") \
        .getOrCreate();
sc = spark.sparkContext
#############################################
df1 = spark.createDataFrame(
        [("a", 1), ("a", 1), ("a", 1), ("a", 2), ("b",  3), ("c", 4)], ["C1", "C2"])
df2 = spark.createDataFrame([("a", 1), ("b", 3)], ["C1", "C2"])

df1.exceptAll(df2).show()
# +---+---+
# | C1| C2|
# +---+---+
# |  a|  1|
# |  a|  1|
# |  a|  2|
# |  c|  4|
# +---+---+
##############################################
  • 注意:排除数据时,如果有重复的数据,那么只排除df2中特定个数的数据即可,如例子中的("a",1)
  • 如果执行df1.intersectAll(df2).show() 即可求df1 和df2的交集。
+---+---+
| C1| C2|
+---+---+
|  b|  3|
|  a|  1|
+---+---+

输出

python3 df_demo12.py

+---+---+
| C1| C2|
+---+---+
|  a|  1|
|  a|  1|
|  a|  2|
|  c|  4|
+---+---+