我在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
”。
当我运行这段代码时,软件会抱怨说语法无效,但是我没有看到错误。
答案 0 :(得分:0)
在这里听孩子...
对于宏伟的解决方案...(鼓声)
df.withColumn("A", when(length(df.A) == 1, concat(df.A, lit("0"))).otherwise(df.A))
拜托!
答案 1 :(得分:0)
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。