需要 Pyspark/Pandas 脚本来实现所需的结果 [关闭]

Posted

技术标签:

【中文标题】需要 Pyspark/Pandas 脚本来实现所需的结果 [关闭]【英文标题】:Need Pyspark/Pandas script to achieve required results [closed] 【发布时间】:2021-08-03 12:09:13 【问题描述】:

我有一个如下数据集:

我想得到以下结果:

请注意,这里我想按“id_alt_col”分组,选择 end_date=null 的 desc_col 并将其复制到 desc_col 的其余部分以获取所有重复的 id_alt_col 值。 我无法为此创建脚本.. 有人可以帮忙吗。!! 谢谢。

【问题讨论】:

请不要将数据添加为图片 请阅读How to Ask和edit您的问题。实际上,听起来您希望我们为您编写代码,而这不是 *** 的重点。 【参考方案1】:

如果id_alt_col的每个值总是有空值,可以试试:

df['desc_col'] = df['id_alt_col'].map(df.groupby('id_alt_col').apply(lambda x: x.loc[x['end_date'].isna() | (x['end_date'] == 'null') , 'desc_col'].iloc[0]))

【讨论】:

【参考方案2】:

在 Pyspark 中,我会做这样的事情:

from pyspark.sql import functions as F, Window as W

df.withColumn(
    "desc_col",
    F.first("desc_col").over(
        W.partitionBy("id_alt_col").orderBy(F.col("end_date").asc_nulls_first())
    ),
).show()
+------+--------+----------+---------+                                          
|id_col|desc_col|id_alt_col| end_date|
+------+--------+----------+---------+
|     5|   desc5|       110|     null|
|     6|   desc6|       120|     null|
|     1|   desc1|       100|     null|
|     4|   desc1|       100| 4/7/2021|
|     3|   desc1|       100|6/10/2021|
|     2|   desc1|       100| 8/2/2021|
+------+--------+----------+---------+

【讨论】:

以上是关于需要 Pyspark/Pandas 脚本来实现所需的结果 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

开窗函数之累积和,PySpark,Pandas和SQL版实现

PySpark pandas_udfs java.lang.IllegalArgumentException错误

在 PySpark Pandas UDF 中指定用户定义函数的正确方法

在 pyspark.pandas 中添加/减去日期时间

如何从 Snowflake SQL 查询创建 PySpark pandas-on-Spark DataFrame?

使用 pyspark/pandas 使用列名的模式匹配对具有不同列名的多个列值求和