python - 如何根据大小更改列值
问题描述
我在 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
”的相同代码。
当我运行此代码时,软件抱怨说语法无效,但我没有看到错误。
解决方案
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。
推荐阅读
- python - codechef 问题 REDONE 中的 Runtime-NZEC 错误
- laravel - 尝试在 Laravel 上运行迁移时出错
- python - 使用 python 和 raspbian 编辑 wpa_supplicant.conf
- python - 小路('
') 导致所有 url 映射到不正确的视图 - r - 在compana中用较小的值(即0001)替换零值时,有没有办法获得一致的结果?
- html - 如何使按钮像链接一样但在新选项卡上?
- xcode - 如何在 macOS 10.14.4 Mojave 上使用 fink
- java - System.out.print 不显示客户数据
- javascript - 等待 serviceWorker 注册不返回激活的工作人员
- mysql - 如何使用“级联”删除用户并自动删除他的所有关系?