Select PySpark数据帧何时使用/不使用选择
基于Pypark文档: DataFrame相当于Spark SQL中的关系表,可以使用SQLContext中的各种函数创建 这意味着我可以使用Select来显示列的值,但是,我看到有时会使用以下两个等效代码:Select PySpark数据帧何时使用/不使用选择,select,pyspark-sql,pyspark-dataframes,Select,Pyspark Sql,Pyspark Dataframes,基于Pypark文档: DataFrame相当于Spark SQL中的关系表,可以使用SQLContext中的各种函数创建 这意味着我可以使用Select来显示列的值,但是,我看到有时会使用以下两个等效代码: # df is a sample DataFrame with column a df.a # or df['a'] 有时当我使用select时,我可能会得到一个错误而不是它们,反之亦然,有时我不得不使用select 例如,这是一个用于在给定图片中查找狗的数据帧问题: joined_df
# df is a sample DataFrame with column a
df.a
# or
df['a']
有时当我使用select时,我可能会得到一个错误而不是它们,反之亦然,有时我不得不使用select
例如,这是一个用于在给定图片中查找狗的数据帧问题:
joined_df.printSchema()
root
|-- folder: string (nullable = true)
|-- filename: string (nullable = true)
|-- width: string (nullable = true)
|-- height: string (nullable = true)
|-- dog_list: array (nullable = true)
| |-- element: string (containsNull = true)
如果我想选择狗的详细信息并显示10行,此代码将显示一个错误:
print(joined_df.dog_list.show(truncate=False))
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
print(joined_df.dog_list.show(truncate=False))
TypeError: 'Column' object is not callable
问题1:当我必须使用Select时,以及当我必须使用df.a或df[“a”]
问题2:上面的错误是什么意思?”Column'object不可调用
df。coll\u name
返回一个Column对象,但df。选择(“col\u name”)
返回另一个数据帧
看到这个了吗
这里的关键是这两个方法返回两个不同的对象,这就是为什么打印(joined_df.dog_list.show(truncate=False))
会给出错误。这意味着Column对象没有这个.show方法,但dataframe有
所以当您调用函数时,函数以列作为输入,您应该使用df.colu\u name,如果您想在数据帧级别操作,您需要使用df.select(“colu\u name”)谢谢,那么为什么它显示此错误“Column”对象不可调用呢。?此错误非常令人困惑,我们在许多不同的情况下都会看到。主要原因是Column对象没有这样的方法,或者Column对象不能在函数调用中使用。我同意这不是很直观,是一个关于python对象的通用方法
print(joined_df.select('dog_list').show(truncate=False))