我在csv文件中有增量加载。我在Dataframe中读取csv。Dataframe有一列包含一些字符串。我必须从这个列中找到不同的字符串并分配一个 ID
(整数)到从 0
在加入另一个Dataframe之后。
在下一次运行中,我必须在找到 ID
列并为不同的字符串递增。在任何有空的地方 ID
列,我必须从上一次运行的值中增加(+1)。
第一次运行
字符串ID0第一个1第二个第三个第四个4
第二次运行 MAX(ID) = 4
字符串零第一个第二个第三个第四个第五个第六个第七个第八个
我试过了,但没能成功。。
max = df.agg({"ID": "max"}).collect()[0][0]
df_incremented = df.withcolumn("ID", when(col("ID").isNull(),expr("max += 1")))
让我知道是否有一个简单的方法来实现这一点。
1条答案
按热度按时间rbl8hiat1#
由于只保留不同的值,因此可以使用
row_number
窗口上的函数:现在让我们在这个Dataframe中添加一些行并使用
row_number
随着coalesce
分配ID
仅适用于为空的行(无需获取最大值):如果您也希望保留重复的值并为它们指定相同的值
ID
,然后使用dense_rank
而不是row_number
.