【发布时间】:2018-11-10 18:42:48
【问题描述】:
我有一个带有 n 列的 pyspark 数据帧 (df),我想生成另一个 n 列的 df,其中每列记录相应原始 df 列中连续行的百分比差异。并且新df中的列标题应该是==旧数据帧中的相应列标题+“_diff”。 使用以下代码,我可以为原始 df 中的每一列生成新的百分比变化列,但无法将它们粘贴到具有合适列标题的新 df 中:
from pyspark.sql import SparkSession
from pyspark.sql.window import Window
import pyspark.sql.functions as func
spark = (SparkSession
.builder
.appName('pct_change')
.enableHiveSupport()
.getOrCreate())
df = spark.createDataFrame([(1, 10, 11, 12), (2, 20, 22, 24), (3, 30, 33, 36)],
["index", "col1", "col2", "col3"])
w = Window.orderBy("index")
for i in range(1, len(df.columns)):
col_pctChange = func.log(df[df.columns[i]]) - func.log(func.lag(df[df.columns[i]]).over(w))
谢谢
【问题讨论】: