如何为每个对应的唯一列值分配唯一ID?

用户9102d82

想象一个如下所示的数据框:

+-------+--------+---------+---------+--------+-----------------+---+
|address|lastname|firstname|patientid|policyno|visitid          |id |
+-------+--------+---------+---------+--------+-----------------+---+
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_1| 1 |
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_2| 1 |
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_3| 1 |
|addr2  |Dobs    |Aliya    |patid2   |policy2 |visituid_aliya_1 | 2 |
|addr2  |Dobs    |Aliya    |patid2   |policy2 |visituid_aliya_2 | 2 |
|addr2  |Dobs    |OP       |patid3   |policy3 |visituid_OP_1    | 3 |
+-------+--------+---------+---------+--------+-----------------+---+

当名称(firstname+ lastname)相同,名称不同时,“ id”的列值保持不变-我想分配一个新的ID。

我需要这样做是因为我想确定一个特定的数据集(其中包含敏感的详细信息),以便我可以在我的应用程序中使用相同的数据,但值已更改。该字段id将用作与其他数据帧联接的索引键。

关于的另一部分id是,其他虚拟数据帧也将包含一个类似的id列,可能会使用来填充该列,monotonically_increasing_id()因此最好以id连续增加的方式从0或1开始。

如何使用Scala在火花中实现这一目标?

斯里尼瓦斯

使用window功能。

scala> df.show(false)
+-------+--------+---------+---------+--------+-----------------+
|address|lastname|firstname|patientid|policyno|visitid          |
+-------+--------+---------+---------+--------+-----------------+
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_1|
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_2|
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_3|
|addr2  |Dobs    |Aliya    |patid2   |policy2 |visituid_aliya_1 |
|addr2  |Dobs    |Aliya    |patid2   |policy2 |visituid_aliya_2 |
|addr2  |Dobs    |OP       |patid3   |policy3 |visituid_OP_1    |
|addr4  |AN      |OTHER    |patid4   |policy4 |visituid_OP_1    |
|addr2  |ANO     |THER     |patid5   |policy5 |visituid_OP_1    |
+-------+--------+---------+---------+--------+-----------------+
val expr = Seq("lastname","firstname")
            .map(c => hash(col(c)).as(c))
            .reduce(concat(_,_).asc)
val winSpec = dense_rank()
                .over(Window.orderBy(expr))

输出量

scala> df.withColumn("id",winSpec).show(false)

+-------+--------+---------+---------+--------+-----------------+---+
|address|lastname|firstname|patientid|policyno|visitid          |id |
+-------+--------+---------+---------+--------+-----------------+---+
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_1|1  |
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_2|1  |
|addr1  |Pits    |Rodney   |patid1   |policy1 |visituid_rodney_3|1  |
|addr4  |AN      |OTHER    |patid4   |policy4 |visituid_OP_1    |2  |
|addr2  |Dobs    |OP       |patid3   |policy3 |visituid_OP_1    |3  |
|addr2  |Dobs    |Aliya    |patid2   |policy2 |visituid_aliya_1 |4  |
|addr2  |Dobs    |Aliya    |patid2   |policy2 |visituid_aliya_2 |4  |
|addr2  |ANO     |THER     |patid5   |policy5 |visituid_OP_1    |5  |
+-------+--------+---------+---------+--------+-----------------+---+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为每个复选框分配唯一的ID?

如何为表中的列中的每个重复值分配唯一值

如何计算与数据框中另一列中每个唯一值相对应的值?

如何计算基于另一列的两列的唯一值?(每个ID)

每个主键的唯一列值

如何为列中的每组相同值分配唯一的ID号

在视图中插入一列,该视图将为每个唯一的主键分配一个唯一的ID

如何为每个唯一ID获取一行,每个特定列的值包含多个列

分组并汇总与特定日期另一列的每个唯一值相对应的列的布尔值数量

如何为熊猫数据框中按ID分组的每个列的每个唯一值查找最小值

如何选择与 PostgreSQL 中另一列的最高值的唯一列值对相对应的行?

如何为熊猫布尔掩码中的连续True值的每个序列分配唯一的分组值

如何基于另一列的唯一值获取一列的唯一值

如何为python中的每个像素分配唯一的颜色?

如何为每个唯一ID选择一行

在 R 中,指示另一列的每个 ID 是否具有多个唯一值

(Django)如何为由ForeignKey链接的内容分配给每个用户唯一的值?

AQL-如何为集合C中的每个文档分配数组中的唯一值?

为列中的每个唯一值分配值

跳过每个唯一列值的行

为每个唯一列值插入记录

熊猫,对于一列中的每个唯一值,在另一列中获得唯一值

如何为python列中的每个唯一值创建一个虚拟对象

如何为动态创建的视图分配唯一的ID?

如何为整个数据帧分配唯一 ID?

如何为数据库对象分配唯一的ID

如何为输入表单中的输入分配唯一 ID

为列中的每个唯一值生成唯一列

如何为异步加载的下拉列表分配唯一值