在Spark Dataframe的过滤器中使用“ and”子句时,它将返回Spark.SQL.Column
而不是Spark Dataframe
。但对于一种情况,它可以正常工作。
如何show()
或通过Spark Sql Column对象进行迭代?
尝试使用show()
函数会引发错误-'Column' object not callable.
或者如何将Spark.SQL.Column
转换为Spark Dataframe?还是如何在filter子句中通过多个条件?
df2 = df.filter((df.dropoff_longitude >= -65.09)&(df.dropoff_longitude <= -63.000))
答案 0 :(得分:0)
根据pyspark official doc
您可以使用df.filter或df.where通过过滤条件 为您的示例传递多个条件
df.filter("dropoff_longitude >= -65.09 and df.dropoff_longitude <= -63.000")
df.where("dropoff_longitude >= -65.09 and df.dropoff_longitude <= -63.000") # SQL String
或
from pyspark.sql.functions import col
df.filter(col("dropoff_longitude) >= -65.09) & (col(dropoff_longitude) <= -63.000))
说话表演。
df.dropoff_longitude.show() # this reports an error
df.select("dropoff_longitude").show() # this line works
因为.show是spark.sql.dataframe的属性/功能,而不是spark.sql.columns
因此,如果您的转换返回spark列,则.show将不起作用
但是如果您的转换返回到另一个数据框,那么.show应该可以工作