无法在 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(<list_of_cols>)
其中<list_of_cols>
在您的情况下是一列。
【讨论】:
以上是关于无法在 PySpark SQLContext DataFrame 中显示列的主要内容,如果未能解决你的问题,请参考以下文章
将其中一个用作模块时如何在不同的笔记本中使用“sqlContext”(Pyspark)
`pyspark.sql.SparkSession.sql` 和 `SQLContext.read.format()` 有啥区别?
pyspark:如何获取 spark 数据帧的 Spark SQLContext?