首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PySpark:如何删除DataFrame中的非数字列?

在PySpark中,要删除DataFrame中的非数字列,可以使用drop方法结合filter函数来实现。

首先,使用filter函数筛选出非数字列。可以通过使用cast函数将列转换为数字类型,并使用isNaN函数判断是否为非数字。然后,使用select方法选择需要保留的列。

下面是一个示例代码:

代码语言:txt
复制
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的列,筛选出数据类型为doublefloatinteger的列。然后,使用select方法选择这些列,并返回新的DataFrame。

这样,非数字列就会被删除,只保留数字列。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券