python - 如何在 pyspark 中执行类似于 SparkR 示例代码的窗口分区滞后
问题描述
我正在尝试在 pyspark 中实现类似于以下 SparkR 代码的内容。
df <- createDataFrame(mtcars)
# Partition by am (transmission) and order by hp (horsepower)
ws <- orderBy(windowPartitionBy("am"), "hp")
# Lag mpg values by 1 row on the partition-and-ordered table
out <- select(df, over(lag(df$mpg), ws), df$mpg, df$hp, df$am)
有谁知道如何在 pyspark 数据框上执行此操作?
解决方案
from pyspark.sql.window import Window
from pyspark.sql.functions import lag
#Create dataframe
data = (("A", 10), ("B", 20), ("A", 30), ("C", 15))
columns = ["Name", "Number"]
df = sqlContext.createDataFrame(data, columns)
#Define the window
win = Window.partitionBy("Name").orderBy("Number")
df_lag = df.withColumn("lag", lag("Number", 1, -5).over(win))
推荐阅读
- excel - excel用户表单中热键作为快捷键的组合
- excel - 如何在 Excel 功能区中添加按钮以调用自定义加载项?
- javascript - 如何在javascript中基于#或##创建目录?
- mysql - 用空格填充字符串到一定长度
- python - Python pycurl 将值发布到 Web 表单非常简单
- c++ - C++ | 避免在 DLL 中重复读取配置文件
- python - PyQt5按钮单击事件未调用连接方法
- reactjs - 从遗留(纯 JS)应用程序重新渲染 React 组件
- android - 如何在 Recycler 视图中使用 exoPlayer(多个视频)?如何从列表或数组中读取视频标题、网址?
- javascript - 我的 React JS 网站没有显示 iPhone/iPad 上的所有图像