gpt4 book ai didi

python - 在 Pyspark 中执行类似 Excel 的 "vlookup"方法

转载 作者:行者123 更新时间:2023-12-04 08:36:15 24 4
gpt4 key购买 nike

我是 Pyspark 的新手,我需要一些帮助。我有一个 Pyspark 数据框 df1像下面的一个:

df1 =
|---------------------|------------------|------------------|
| ID_Machine | Event_Duration | Timestamp |
|---------------------|------------------|------------------|
| 1 | 34 | 213 |
|---------------------|------------------|------------------|
| 1 | 97 | 572 |
|---------------------|------------------|------------------|
| 1 | 78 | 872 |
|---------------------|------------------|------------------|
| 2 | 83 | 345 |
|---------------------|------------------|------------------|
| 2 | 14 | 718 |
|---------------------|------------------|------------------|
| 2 | 115 | 884 |
|---------------------|------------------|------------------|

从中,我必须执行 groupBy使用聚合方法:
import pyspark.sql.functions as F

df2 = df1.groupBy("ID_Machine").agg(F.max("Event_duration").alias("Max_Event_Duration")
从而获得:
df2 = 
|---------------------|---------------------------|
| ID_Machine | Max_Event_Duration |
|---------------------|---------------------------|
| 1 | 97 |
|---------------------|---------------------------|
| 2 | 115 |
|---------------------|---------------------------|
到目前为止,一切都很好。但是,现在我想执行某种功能,例如 vlookup在 Excel 中,我在其中检索 Timestamp df1 中的值对应 Max_Event_Durationdf2 , 获得如下内容:
|---------------------|---------------------|------------------|
| ID_Machine | Max_Event_Duration | Timestamp |
|---------------------|---------------------|------------------|
| 1 | 97 | 572 |
|---------------------|---------------------|------------------|
| 2 | 115 | 884 |
|---------------------|---------------------|------------------|
有人知道如何创建第三个数据框或如何修改创建 df2 的代码吗?为了包括相应的 Timestamp值(value)?
谢谢!

最佳答案

您必须首先创建一个数据框,其最大事件的名称与 OG 数据框中的名称相同

import pyspark.sql.functions as F

df_max = df1.groupBy("ID_Machine").agg(F.max("Event_Duration").alias("Event_Duration"))
df_max.show()
这会给你 df :
+----------+--------------+
|ID_Machine|Event_Duration|
+----------+--------------+
| 1| 97|
| 2| 115|
+----------+--------------+
然后通过两个相似的命名列加入数据框,然后重命名事件持续时间
df_combined = df_max.join(df1, ["ID_Machine", "Event_Duration"]).withColumnRenamed("Event_Duration", "Max_Event_Duration")
df_combined.show()
这会给你:
+----------+------------------+---------+
|ID_Machine|Max_Event_Duration|Timestamp|
+----------+------------------+---------+
| 2| 115| 884|
| 1| 97| 572|
+----------+------------------+---------+

关于python - 在 Pyspark 中执行类似 Excel 的 "vlookup"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64784285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com