2016-04-25 4 views
1

У меня есть два фрейма данных, которые я загрузил из двух файлов csv. Примеры:PySpark: Как сравнить два dataframes

old 
+--------+---------+----------+ 
|HOTEL ID|GB  |US  | 
+--------+---------+----------+ 
| 80341|  0.78|  0.7| 
| 255836|  0.6|  0.6| 
| 245281|  0.78|  0.99| 
| 229166|  0.0|  0.7| 
+--------+---------+----------+ 

new 
+--------+---------+----------+ 
|HOTEL ID|GB  |US  | 
+--------+---------+----------+ 
| 80341|  1 |  0.7| 
| 255836|  0.6|  1 | 
| 245281|  0.78|  0.99| 
| 333 |  0.0|  0.7| 
+--------+---------+----------+ 

, и я хотел бы получить:

expected result 
+--------+---------+----------+ 
|HOTEL ID|GB  |US  | 
+--------+---------+----------+ 
| 80341|  1 |  None| 
| 255836|  None|  1 | 
| 333 |  0.0|  0.7| 
+--------+---------+----------+ 

Я возился с методом Еогеаспа dataframe, но не в состоянии заставить его работать ... как искра новичок был бы признателен для любых подсказок.

Cheers!

Рафаэль

+0

на самом деле можно получить последние | 333 | 0.0 | 0.7 | строка с помощью subtract(), но все еще не понятна в отношении ячейки по сравнению с ячейкой. – Rafael

ответ

-1

Можете ли вы дать более подробную информацию о работе, что вы работаете на старые и новые, чтобы получить ожидаемый результат?

Вы также выполняете некоторую арифметическую операцию на столбцах GB и US между старыми и новыми фреймами данных?

Если не присоединиться кажется, что вы могли бы искать Если заказ не то же самое между двумя dataframes вы должны сделать присоединиться к первым

#renaming column names for convenience 
newDF=new.toDF('HOTEL ID','N_GB','N_US') 
#doing an inner join (lookup sql joins for the type of join you need) 
old.join(newDF,'HOTEL ID','inner') 

Это даст вам таблицу с схема

| HOTEL ID | US | DB | N_US | N_GB | 
|----------|----|----|------|------| 
| 80341 |0.78| 0.7|1  | 0.7 | 
|   | | |  |  | 
|   | | |  |  | 
+0

спасибо за ваш ответ, операция (ы) по старому и новому, чтобы получить ожидаемый результат - это то, что я получаю :). Я хотел бы сохранить значения ячеек в новых, заменяя их старыми и помещая нулевые или пустые значения, когда значения в старых и новых одинаковы (для одной и той же ячейки). Результирующий фреймворк должен иметь те же столбцы, что и старые и новые. Приветствия. – Rafael