我有一个spark数据框,其列salary如下所示:
|Salary| |"100"| |"200"| |"abc"|
dafault数据类型是string。我想把它转换成整数,去掉那些引起解析问题的行。期望输出
|Salary| |100| |200|
有人可以让我知道过滤的行,这将导致数据类型解析问题的代码。提前谢谢。
y53ybaqx1#
可以使用正则表达式过滤所需字段,然后强制转换列:
import org.apache.spark.sql.types._ df.filter(row => row.getAs[String]("Salary").matches("""\d+""")) .withColumn("Salary", $"Salary".cast(IntegerType))
如果您不喜欢regex,也可以使用try:
import scala.util._ df.filter(row => Try(row.getAs[String]("Salary").toInt).isSuccess) .withColumn("Salary", $"Salary".cast(IntegerType))
1条答案
按热度按时间y53ybaqx1#
可以使用正则表达式过滤所需字段,然后强制转换列:
如果您不喜欢regex,也可以使用try: