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| +---+---+