【发布时间】:2019-03-23 06:20:07
【问题描述】:
我正在使用 pyspark 来解析大量数据。我有一个包含以下列的数据框
ip_address
device_id
location
device_type
我想创建一个名为 id 的新列,并将 id 的相同值分配给满足以下条件之一的列
1) 他们有相同的device_id 和ip_address
2) 它们具有相同的device_id、location 和device_type
3) 它们具有相同的ip_address、location 和device_type
基本上,我想根据上述条件找到所有代表同一设备的行,并给它们相同的id
所以假设我有以下列
+--------+-----------+------------+-----------+-------------+
| number | device_id | ip_address | location | device_type |
+--------+-----------+------------+-----------+-------------+
| 1 | device1 | ip1 | location1 | type1 |
| 2 | device1 | ip1 | location1 | type1 |
| 3 | device1 | ip2 | location1 | type1 |
| 4 | device2 | ip1 | location1 | type1 |
| 5 | device3 | ip3 | location2 | type2 |
+--------+-----------+------------+-----------+-------------+
前 4 行应分配相同的 id,因为每一行都满足三个条件之一。
第 1 行和第 2 行满足条件 1
第 2 行和第 3 行满足条件 2
第 3 行和第 4 行满足条件 3
所以输出应该是
+--------+-----------+------------+-----------+-------------+----+
| number | device_id | ip_address | location | device_type | id |
+--------+-----------+------------+-----------+-------------+----+
| 1 | device1 | ip1 | location1 | type1 | 1 |
| 2 | device1 | ip1 | location1 | type1 | 1 |
| 3 | device1 | ip2 | location1 | type1 | 1 |
| 4 | device2 | ip1 | location1 | type1 | 1 |
| 5 | device3 | ip3 | location2 | type2 | 2 |
+--------+-----------+------------+-----------+-------------+----+
这甚至有可能实现吗?如果是这样,我该怎么做?
【问题讨论】:
标签: pandas apache-spark dataframe pyspark conditional-statements