Сравните две колонки разной длины

Я работаю с двумя фреймами данных pyspark, каждый из которых имеет один столбец. Один с 3 строками (ColumnA), а другой со 100 строками (ColumnB). Я хочу сравнить все строки столбца A с каждой отдельной строкой столбца B. (Мне нужно знать, больше ли какая-либо из дат в ColumnA, чем в ColumnB, если да, добавьте в ColumnX a 1)

Мы ценим любые предложения. Спасибо!

введите здесь описание изображения


person Obi    schedule 25.09.2019    source источник
comment
Покажите, пожалуйста, что вы уже пробовали   -  person mankowitz    schedule 25.09.2019


Ответы (1)


Перекрестное соединение - это решение -

Например -

from pyspark.sql.types import *      
from pyspark.sql.functions import *  

A = [11, 2, 13, 4]
B = [5, 6]

df = spark.createDataFrame(A,IntegerType())
df1 = spark.createDataFrame(B,IntegerType())
df.select(col("value").alias("A")).crossJoin(df1.select(col("value").alias("B"))).withColumn("C",when(col("A") > col("B"),1).otherwise(0)).select("A","B","C").show()

+---+---+---+
|  A|  B|  C|
+---+---+---+
| 11|  5|  1|
| 11|  6|  1|
|  2|  5|  0|
|  2|  6|  0|
| 13|  5|  1|
| 13|  6|  1|
|  4|  5|  0|
|  4|  6|  0|
+---+---+---+
person Aasim Khan    schedule 25.09.2019