【问题标题】:Split PySpark Dataframe column into multiple将 PySpark Dataframe 列拆分为多个
【发布时间】:2020-04-11 19:28:29
【问题描述】:

我有一个 pyspark 数据框列,其中包含如下数据。

Column 1
A1,A2
B1
C1,C2
D2

我必须根据逗号将列拆分为 2 列。输出应该如下。

Column 1    Column 2
A1          A2
            B1
C1          C2
            D2

我尝试使用 split() 函数,但我的 B1 和 D2 被填充到第 1 列而不是第 2 列。有没有办法实现上述输出?

【问题讨论】:

  • 你已经固定了 2 列或者它可能是 N 项?
  • 固定2列

标签: python apache-spark pyspark


【解决方案1】:

这是使用splitsize 的一种方法:

from pyspark.sql.functions import split, size, col, when

df.withColumn("ar", split(df["Column 1"], ",")) \
  .withColumn("Column 2", when(
                             size(col("ar")) == 1, col("ar")[0])
                             .otherwise(col("ar")[1])) \
  .withColumn("Column 1", when(size(col("ar")) == 2, col("ar")[0])) \
  .drop("ar") \
  .show()

# +--------+--------+
# |Column 1|Column 2|
# +--------+--------+
# |      A1|      A2|
# |    null|      B1|
# |      C1|      C2|
# |    null|      D2|
# +--------+--------+

首先我们用逗号分隔Column 1,然后我们有条件地访问数组中的项目。

【讨论】:

  • 谢谢.. 会试试这个
  • 我刚刚将df['ar'] 更改为col('ar'),因为这可能会导致访问列值时出现问题
  • 报错“otherwise() 只能应用于之前由 when() 生成的列”
  • 它在我们创建 Column2 的那一行
  • 完美运行..我的错误..我留下了一个括号
猜你喜欢
  • 2020-11-10
  • 2019-11-25
  • 1970-01-01
  • 2022-01-03
  • 2017-02-27
  • 1970-01-01
  • 2017-04-22
相关资源
最近更新 更多