如何从两个Dataframes计算两列的布尔值?

时间:2017-03-19 00:45:21

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

我有两个数据帧A和B,如:

A Dataframes is:
+----+-----+
|   k|    v|
+----+-----+
|key1|False|
|key2|False|
|key3|False|
|key4|False|
|key5|False|
|key6|False|
+----+-----+
B Dataframes is:
+----+----+
|   k|   v|
+----+----+
|key2|True|
|key3|True|
+----+----+

我想用K列连接A和B表,并计算v列,结果如:

+----+-----+
|   k|    v|
+----+-----+
|key1|False|
|key2|True |
|key3|True |
|key4|False|
|key5|False|
|key6|False|
+----+-----+

我认为代码如下:

A.join(B,'k','left_out')

但是,我不知道如何计算列v。

我借用@Vitaliy Kotlyarenko的想法来修改我的代码:

from pyspark.sql import functions as F

A.join(B,'k','left_out').withColumn('value', F.col('v') & F.col('v')).drop('v')

1 个答案:

答案 0 :(得分:2)

您可以使用withColumn方法

A.join(B,'k','left_out')
 .withColumn('value', A.col('v') and A.col('v'))
 .select(A.col('id'), col('value'))

我不确定上面示例的语法正确性 - 它是用Scala编写并转换为Python的,但它应该提供这个想法。