1

我有两个从两个 csv 文件加载的数据框。例子:

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 foreach 方法,但未能让它工作......作为一个火花新手,如果有任何线索,我将不胜感激。

干杯!

拉斐尔

4

1 回答 1

-1

您能否提供有关您在新旧版本上运行以获得预期结果的操作的更多详细信息?

您是否还在旧数据帧和新数据帧之间对 GB 和 US 列进行了一些算术运算?

如果不是连接看起来像您可能正在寻找的东西如果两个数据帧之间的顺序不同,您必须先进行连接

#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  |
|          |    |    |      |      |
|          |    |    |      |      |
于 2016-04-25T19:00:21.967 回答