列选择
Spark 中与 SQL 的 SELECT 对应的方法是 .select()。该方法可以接收多个参数——每个参数对应您要选择的一列。参数既可以是字符串形式的列名(每列一个字符串),也可以是列对象(使用 df.colName 语法)。当传入列对象时,您可以像在 .withColumn() 中一样,对该列执行加减等运算,从而改变其中的数据。
.select() 与 .withColumn() 的区别在于:.select() 只返回您指定的列,而 .withColumn() 会在您定义的新列之外返回整个 DataFrame 的所有列。通常在操作一开始就丢弃不需要的列是个好主意,这样在清洗数据时就不会拖着多余的数据。在这种情况下,您应使用 .select(),而不是 .withColumn()。
请注意,名为 spark 的 SparkSession 已在您的工作区中,同时还有名为 flights 的 Spark DataFrame。
本练习是课程的一部分
PySpark 基础
练习说明
- 通过将列名以字符串形式传入,从
flights中选择"tailnum"、"origin"和"dest"三列。将结果保存为selected1。 - 使用
df.colName语法选择"origin"、"dest"和"carrier"三列,然后用已为您定义的两个过滤条件(filterA和filterB)对结果进行过滤,仅保留从 SEA 到 PDX 的航班。将结果保存为selected2。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Select the first set of columns
selected1 = flights.select("____", "____", "____")
# Select the second set of columns
temp = flights.select(____.____, ____.____, ____.____)
# Define first filter
filterA = flights.origin == "SEA"
# Define second filter
filterB = flights.dest == "PDX"
# Filter the data, first by filterA then by filterB
selected2 = temp.filter(____).filter(____)