python - PySpark - 比较数据帧

标签 python apache-spark pyspark apache-spark-sql pyspark-sql

我是 PySpark 的新手,所以道歉,如果这有点简单,我发现了其他比较数据帧的问题,但不是这样的问题,因此我不认为它是重复的。
我正在尝试比较具有相似结构的两个日期框架。 “名称”将是唯一的,但计数可能不同。

因此,如果计数不同,我希望它生成一个数据框或一个 python 字典。就像下面一样。关于我如何实现这样的事情的任何想法?

DF1

+-------+---------+
|name   | count_1 |
+-------+---------+
|  Alice|   1500  |
|    Bob|   1000  |
|Charlie|   150   |
| Dexter|   100   |
+-------+---------+

DF2
+-------+---------+
|name   | count_2 |
+-------+---------+
|  Alice|   1500  |
|    Bob|   200   |
|Charlie|   150   |
| Dexter|   10    |
+-------+---------+

产生结果:

不匹配
+-------+-------------+--------------+
|name   | df1_count   | df2_count    |
+-------+-------------+--------------+
|    Bob|   1000      |    200       |
| Dexter|   100       |     10       |
+-------+-------------+--------------+

比赛
+-------+-------------+--------------+
|name   | df1_count   | df2_count    |
+-------+-------------+--------------+
|  Alice|   1500      |   1500       |
|Charlie|   150       |    150       |
+-------+-------------+--------------+

最佳答案

所以我创建了第三个 DataFrame,加入 DataFrame1 和 DataFrame2,然后按计数字段过滤以检查它们是否相等:

不匹配:

df3 = df1.join(df2, [df1.name == df2.name] , how = 'inner' )
df3.filter(df3.df1_count != df3.df2_count).show()

比赛:
df3 = df1.join(df2, [df1.name == df2.name] , how = 'inner' )
df3.filter(df3.df1_count == df3.df2_count).show()

希望这对某人有用

关于python - PySpark - 比较数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51824736/

相关文章:

javascript - Bokeh 无法从 CDN 加载 Bokeh

hadoop - 如何在使用 Google Cloud Dataproc 启动的 Spark 集群中启用 Snappy 编解码器支持?

dataframe - 逐行计算pyspark数据帧中的空数

python - RDD 转换图,Python

json - 很难将 JSON 转换为 Spark Dataframe

python - 使用 matplotlib 的 x-y 散点图中误差条的颜色图

python - Django 查询数据库

hadoop - CentOS 7 上的 Spark 和 IPython

java - Spark : Java API filter() shows nothing, 结果与 Spark-shell 不同

python - Pandas 数据框替换列中的子字符串,给出意外的结果