【问题标题】: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 值。 我无法为此创建脚本.. 有人可以帮忙吗。!! 谢谢。

【问题讨论】:

  • 请不要将数据添加为图片
  • 请阅读How to Askedit您的问题。实际上,听起来您希望我们为您编写代码,而这不是 stackoverflow 的重点。

标签: 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|
    +------+--------+----------+---------+
    

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多