Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Select PySpark数据帧何时使用/不使用选择_Select_Pyspark Sql_Pyspark Dataframes - Fatal编程技术网

Select PySpark数据帧何时使用/不使用选择

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

基于Pypark文档:

DataFrame相当于Spark SQL中的关系表,可以使用SQLContext中的各种函数创建

这意味着我可以使用Select来显示列的值,但是,我看到有时会使用以下两个等效代码:

# 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))