2016-04-25 19 views
1

私は2つのcsvファイルから読み込んだ2つのデータフレームを持っています。例:PySpark:2つのデータフレームを比較する方法

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| 
+--------+---------+----------+ 

は、私がデータフレームのforeachメソッドをいじるされているが、それはスパーク初心者として...仕事を得るために失敗することは感謝されます任意の手がかりのために。

乾杯!

ラファエル

+0

実際に最後の| 333 | 0.0 | 0.7 |行を減算()を使用して、まだセルの比較でセルについては愚かです。 – Rafael

答えて

-1

あなたが期待される結果を得るために、新旧の上で実行されている操作についての詳細を与えることができますか?

また、古いデータフレームと新しいデータフレームの間のGB列とUS列の算術演算も行っていますか?

ため、2つのデータフレームでの間と同じでない場合は、 を探しているかもしれないもののように思える参加できない場合は、これはあなたとテーブルを与える参加最初

#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

関連する問題