【问题标题】:Need Pyspark/Pandas script to achieve required results [closed]需要 Pyspark/Pandas 脚本来实现所需的结果 [关闭]
【发布时间】:2021-08-03 12:09:13
【问题描述】:
我有一个如下数据集:
我想得到以下结果:
请注意,这里我想按“id_alt_col”分组,选择 end_date=null 的 desc_col 并将其复制到 desc_col 的其余部分以获取所有重复的 id_alt_col 值。
我无法为此创建脚本..
有人可以帮忙吗。!!
谢谢。
【问题讨论】:
标签:
python
pandas
pyspark
apache-spark-sql
【解决方案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|
+------+--------+----------+---------+