apache-spark - 如何在火花数据框中插入一个新列,其值从 m 到 n,其中 m 和 n 可以在 Pyspark 中单独选择?
问题描述
我想在我预先存在的数据框中插入一个新列,我实际上想将其用作键。我想自己选择密钥的第一个值,并且密钥将延伸到数据报的长度,请注意,我希望这些值是连续的。例如 :
--------------
| Name |
--------------
| A |
| B |
| C |
| D |
--------------
转换后的数据框:
-------------------------
| Name | df_key |
-------------------------
| A | 60 |
| B | 61 |
| C | 62 |
| D | 63 |
-------------------------
在上面的例子中:我希望 60 成为一个变量,其余的键应该延伸到 Dataframe 的长度。
解决方案
通过订购来使用row_number
窗口功能monotonically_increasing_id
。
Example:
df.show()
#+----+
#|Name|
#+----+
#| A|
#| B|
#| C|
#| D|
#+----+
from pyspark.sql.window import *
from pyspark.sql.functions import *
w=Window.orderBy(monotonically_increasing_id())
constant=60
df.withColumn("df_key", constant + row_number().over(w)).show()
#+----+------+
#|Name|df_key|
#+----+------+
#| A| 60|
#| B| 61|
#| C| 62|
#| D| 63|
#+----+------+
推荐阅读
- sql - 从 SQL 获取数据以进行批量插入时发生内存异常
- sql - 在 SQL Server 中获取中间时间段
- prolog - Prolog - 使用 PIE(Prolog 接口引擎)时要求用户输入时出现“未知子句”错误消息
- php - 根据 if else 条件更新行值
- knockout.js - 如何禁用/启用嵌入在映射到淘汰赛可观察数组的表中的下拉列表
- android - 将 gradle 构建工具版本升级到 3.2.1 后,React Native 签名 apk 失败
- c++ - ANN 培训进度使用 FANN 重置每个新的培训课程
- javascript - 在javascript中按天比较两个日期
- jmeter - 如何处理jmeter中的特殊字符
- python - 堆叠数据框和排名