小编shr*_*nar的帖子

Pyspark 列转换:计算列中每个组的百分比变化

我在本地计算机上使用 Pyspark。我有一个包含 450 万行和大约 30,000 种不同股票的 Spark 数据框。我需要计算每只股票随时间变化的百分比。我已经运行了 orderBy,以便将所有股票分组在一起(如下例所示)。

下面是一个简化的示例数据框。

df = spark.read.csv("stock_price.txt", header=True, inferSchema=True)
df.show()

**Company**     **Price**
Company_A         100
Company_A         103
Company_A         105
Company_A         107
Company_B          23
Company_B          25
Company_B          28
Company_B          30
Run Code Online (Sandbox Code Playgroud)

我想要的输出是这样的

**Company**     **Price**     **%_Change**
Company_A         100              0
Company_A         103              3%
Company_A         105              2%
Company_A         107              2%
Company_B          23              0
Company_B          25              9%
Company_B          28              12%
Company_B          30              7%
Run Code Online (Sandbox Code Playgroud)

诀窍(在我看来)是设置一个可以做两件事的代码:1)每次上市新股票时进行识别2)开始计算该股票的第二次观察的百分比变化,并继续计算百分比变化直到最后一次观察。它需要从第二次观察开始,因为在第二次观察发生之前不会出现百分比变化。

pyspark

5
推荐指数
1
解决办法
8520
查看次数

标签 统计

pyspark ×1