我可以使用以下代码吗?
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吗?如果可以的话怎么办?