📅  最后修改于: 2023-12-03 15:06:57.128000             🧑  作者: Mango
在 PySpark 中,我们经常需要删除 DataFrame 中的行。这可以通过过滤数据来完成,过滤器将根据指定的条件删除行。
where()
方法过滤数据where()
是 PySpark DataFrame 类的一个方法,用于根据指定的条件筛选数据。
# 导入 PySpark 模块
from pyspark.sql.functions import col
# 创建示例数据
data = [("Alice", 25, "female"),
("Bob", 30, "male"),
("Charlie", 35, "male"),
("David", 40, "male"),
("Emily", 45, "female")]
# 创建一个 DataFrame
df = spark.createDataFrame(data, ["Name", "Age", "Gender"])
# 打印原始 DataFrame
df.show()
# 删除 Gender 列值为 male 的行
df = df.where(col("Gender") != "male")
# 打印更新后的 DataFrame
df.show()
注:col()
函数用于引用列名,可以使用 >
,>=
,<
,<=
,==
,!=
运算符与列值进行比较。
输出:
+-------+---+------+
| Name|Age|Gender|
+-------+---+------+
| Alice| 25|female|
| Bob| 30| male|
|Charlie| 35| male|
| David| 40| male|
| Emily| 45|female|
+-------+---+------+
+-----+---+------+
| Name|Age|Gender|
+-----+---+------+
|Alice| 25|female|
|Emily| 45|female|
+-----+---+------+
可以看到,Gender 列值为 male 的行已被删除。
filter()
方法过滤数据filter()
方法是 PySpark DataFrame 类的另一个方法,也可以用于根据指定的条件删除行。
# 导入 PySpark 模块
from pyspark.sql.functions import col
# 创建示例数据
data = [("Alice", 25, "female"),
("Bob", 30, "male"),
("Charlie", 35, "male"),
("David", 40, "male"),
("Emily", 45, "female")]
# 创建一个 DataFrame
df = spark.createDataFrame(data, ["Name", "Age", "Gender"])
# 打印原始 DataFrame
df.show()
# 删除 Gender 列值为 male 的行
df = df.filter(col("Gender") != "male")
# 打印更新后的 DataFrame
df.show()
输出:
+-------+---+------+
| Name|Age|Gender|
+-------+---+------+
| Alice| 25|female|
| Bob| 30| male|
|Charlie| 35| male|
| David| 40| male|
| Emily| 45|female|
+-------+---+------+
+-----+---+------+
| Name|Age|Gender|
+-----+---+------+
|Alice| 25|female|
|Emily| 45|female|
+-----+---+------+
可以看到,Gender 列值为 male 的行已被删除。
以上两个方法都可以用于根据指定的条件删除 DataFrame 中的行。我们可以根据实际需求选择其中任意一个。