无法在 PySpark SQLContext DataFrame 中显示列

Posted

技术标签:

【中文标题】无法在 PySpark SQLContext DataFrame 中显示列【英文标题】:Can't display a column in a PySpark SQLContext DataFrame 【发布时间】:2020-11-08 18:19:37 【问题描述】:

很抱歉这个菜鸟问题,但我在这个问题上被困了好几个小时:

如果我输入:

df['avg_wind_speed_9am'].head()

它返回:

TypeError Traceback (most recent call last) <ipython-input-42-c01967246c17> in <module>() ----> 1 df['avg_wind_speed_9am'].head() TypeError: 'Column' object is not callable

如果我输入:

df[['avg_wind_speed_9am']].head()

它返回:

Row(avg_wind_speed_9am=2.080354199999768)

我不明白,通常它应该打印一个列。

这是我导入数据框的方式:

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.load('file:///home/cloudera/Downloads/big-data-4/daily_weather.csv', format='com.databricks.spark.csv', header='true', inferSchema='true')

这是我的数据集的样子:

number,air_pressure_9am,air_temp_9am,avg_wind_direction_9am,avg_wind_speed_9am,max_wind_direction_9am,max_wind_speed_9am,rain_accumulation_9am,rain_duration_9am,relative_humidity_9am,relative_humidity_3pm
0,918.0600000000087,74.82200000000041,271.1,2.080354199999768,295.39999999999986,2.863283199999908,0.0,0.0,42.42000000000046,36.160000000000494
1,917.3476881177097,71.40384263106537,101.93517935618371,2.4430092157340217,140.47154847112498,3.5333236016106238,0.0,0.0,24.328697291802207,19.4265967985621

【问题讨论】:

您能以文本形式分享您的数据框吗? 请以文本形式发布数据框 你的错误信息和输出看起来像pyspark,而不是pandas 该死,我不知道 pyspark 和 pandas 在这点上有什么不同。是的,我在 pyspark 上。 订阅@Michael Szczesny 所说的 - 我会尝试:df.select('avg_wind_speed_9am').head() 使其更传统 【参考方案1】:

尝试以下方法之一:

df.select('avg_wind_speed_9am').head()

df.select('avg_wind_speed_9am').show()
n = 10
df.select('avg_wind_speed_9am').take(n)

通常在pyspark 中您查询的是数据框,而不是单个列,因此要查询您需要使用的单个列:

df.select(&lt;list_of_cols&gt;) 其中&lt;list_of_cols&gt; 在您的情况下是一列。

【讨论】:

以上是关于无法在 PySpark SQLContext DataFrame 中显示列的主要内容,如果未能解决你的问题,请参考以下文章

将其中一个用作模块时如何在不同的笔记本中使用“sqlContext”(Pyspark)

`pyspark.sql.SparkSession.sql` 和 `SQLContext.read.format()` 有啥区别?

pyspark:如何获取 spark 数据帧的 Spark SQLContext?

PySpark:从数据框列表创建 RDD

SqlContext 导入和并行化 Pyspark 中的错误

从 Scala 将 UDF 注册到 SqlContext 以在 PySpark 中使用