Как сравнить два массивных кадра данных на уровне строки и вывести разницу - PullRequest
0 голосов
/ 21 марта 2019

У меня есть два очень больших кадра данных искры.Я хочу сравнить его на уровне строк и вывести только различия

, например:

df1= firstname:abc lastname:xyz company:123


df2= firstname:abc lastname:xyz company:456


ожидаемый результат - diff= company(df1):123 company(df2):456

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Я думаю, что вы ищете , за исключением

df1.except(df2)

, которые будут возвращать строки в df1, а не в df2.

0 голосов
/ 21 марта 2019

На мой взгляд, не существует оптимального решения описанной вами проблемы.Потому что различие между фреймами данных можно найти только тогда, когда у вас есть column/reference, на котором оба фрейма данных могут быть объединены.

С этим примечанием, один из подходов заключается в использовании функции subtract, чтобы найти разницу, котораяпомогает в некоторой степени.

>>> df_1.show()
+-----+-----+-----+
|fname|lname|cmpny|
+-----+-----+-----+
|  abc|  xyz|  123|
+-----+-----+-----+

>>> df_2.show()
+-----+-----+-----+
|fname|lname|cmpny|
+-----+-----+-----+
|  abc|  xyz|  456|
+-----+-----+-----+

>>> df_1.select('*').subtract(df_2.select('*')).show()
+-----+-----+-----+
|fname|lname|cmpny|
+-----+-----+-----+
|  abc|  xyz|  123|
+-----+-----+-----+

>>> df_2.select('*').subtract(df_1.select('*')).show()
+-----+-----+-----+
|fname|lname|cmpny|
+-----+-----+-----+
|  abc|  xyz|  456|
+-----+-----+-----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...