首页 > 解决方案 > 我在 pyspark 中与 df.withcolumn 相关的代码有错误

问题描述

我可以使用以下代码:

df.withColumn("id", df["id"].cast("integer")).na.drop(subset=["id"])

如果id不是一个有效的整数,它将为 NULL 并在后续步骤中删除。

不改变类型

df = sqlContext.read.text("sample.txt") 
df.select(
    df.value.substr(1.2).alias('id'),
    df.value.substr(3.13).alias('name'),
    df.value.substr(16,8).alias('date'),
    df.value.substr(24,3).alias('Yes/No')
).show()

valid = df.where(df["id"].cast("integer").isNotNull())
invalid = df.where(df["id"].cast("integer").isNull())

这里是我的df.printschema版画

root
|-- value: string (nullable = true)
+---+-------------+--------+------+
| id| name          | date |Yes/No| 
+---+-------------+--------+------+ 
| 01|abcdefghijklkm |010V2201| 9Ye| 
+---+-------------+--------+------+
| ab| abcdefghijklmm|010V2201| 9Ye| 
+---+-------------+--------+------+ 

这是一个示例输出

带有整数列的预期结果行将被删除为空值或无效值,我可以在其中使用 df.withcolumn 吗?如果我可以,那怎么办?

标签: pyspark

解决方案


推荐阅读