【问题标题】:Add a new column combining two columns in pyspark dataframe在 pyspark 数据框中添加一个组合两列的新列
【发布时间】:2019-11-18 18:54:53
【问题描述】:

我有一个 pyspark 数据框,其中包含两个日期列和其他几个列。

+-------+-----------+----------+----------+--
|     ID|      date1|  date2   | othercols|
|     1 | 2019-04-01|2019-05-01|      345 |
|     2 | 2019-05-01|2019-06-01|      334 |
|     3 | 2019-06-01|2019-05-01|      324 |

我想将这两个日期列合并为一个新列,以便为每个条目复制行。 我还想使用将日期添加到新列的条件,例如 date1

+-------+----------+----------+----------+----------+--
|     ID|     date1|     date2| all_dates| othercols|
|     1 |2019-04-01|2019-05-01|2019-04-01|   345    |
|     1 |2019-04-01|2019-05-01|2019-05-01|   345    |
|     2 |2019-05-01|2019-06-01|2019-05-01|   334    |
|     2 |2019-05-01|2019-06-01|2019-06-01|   334    |
|     3 |2019-06-01|2019-05-01|2019-06-01|   324    |
|     3 |2019-06-01|2019-05-01|2019-05-01|   324    |

基本上是特定 id 的所有日期,保持其他列的信息不变。

从堆栈溢出的search 中,我可以找到有关将列组合到新列并在新列中创建数组或列表的答案。对union 的任何搜索都会导致不同数据帧等的联合。

如果有人能在这里帮助我,我将不胜感激。

【问题讨论】:

    标签: pyspark pyspark-sql pyspark-dataframes


    【解决方案1】:

    创建一个新列并将其分解为新行:

    import pyspark.sql.functions as F
    
    df = df.withColumn("date_array", F.array(df.date1, df.date2)).withColumn("all_dates", F.explode("date_array"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2019-09-22
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多