首页 > 解决方案 > 如何根据大小更改列值

问题描述

我在 PySpark 设置中有一个数据框 df 。我想改变一列,比如说它叫做A,它的数据类型是“ string”。我想根据它们的长度改变它的值。特别是,如果一行中只有一个字符,我们希望将 0 连接到末尾。否则,我们采用默认值。“已修改”列的名称仍必须为 A。这是针对使用 PySpark3 的 Jupyter Notebook。

这是我到目前为止所尝试的:

df = df.withColumn("A", when(size(df.col("A")) == 1, concat(df.col("A"), lit("0"))).otherwise(df.col("A")))

我还尝试了删除“ df.col”的相同代码。

当我运行此代码时,软件抱怨说语法无效,但我没有看到错误。

标签: pythondataframepysparkjupyter-notebook

解决方案


df.withColumn("temp", when(length(df.A) == 1, concat(df.A, lit("0"))).\
otherwise(df.A)).drop("A").withColumnRenamed('temp', 'A')

阅读您的问题后,我的理解是,您将获得一个额外的 A 列。

因此,您希望将旧列 A 替换为新列 A。因此,我使用所需的逻辑创建了一个临时列,然后删除了 A 列,然后将临时列重命名为 A。


推荐阅读