我在与df.withcolumn相关的pyspark中的代码有错误

时间:2019-05-08 14:14:11

标签: pyspark

我可以使用以下代码吗?

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吗?如果可以的话怎么办?

0 个答案:

没有答案