在PySpark中,要删除DataFrame中的非数字列,可以使用drop
方法结合filter
函数来实现。
首先,使用filter
函数筛选出非数字列。可以通过使用cast
函数将列转换为数字类型,并使用isNaN
函数判断是否为非数字。然后,使用select
方法选择需要保留的列。
下面是一个示例代码:
from pyspark.sql.functions import col, isnan
def drop_non_numeric_columns(df):
numeric_columns = [column for column in df.columns if df.select(column).dtypes[0][1] in ['double', 'float', 'integer']]
df = df.select(*numeric_columns)
return df
# 使用示例
df = spark.createDataFrame([(1, 'a', 2.0), (3, 'b', 4.0)], ['col1', 'col2', 'col3'])
df = drop_non_numeric_columns(df)
df.show()
在上面的示例中,drop_non_numeric_columns
函数接受一个DataFrame作为输入,并返回一个只包含数字列的新DataFrame。首先,通过遍历DataFrame的列,筛选出数据类型为double
、float
或integer
的列。然后,使用select
方法选择这些列,并返回新的DataFrame。
这样,非数字列就会被删除,只保留数字列。
领取专属 10元无门槛券
手把手带您无忧上云