Python 在pyspark shell中预览列
短版: 如何在pyspark shell中预览列 我有一个类型为Python 在pyspark shell中预览列,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,短版: 如何在pyspark shell中预览列 我有一个类型为pyspark.sql.column.column的对象a,当我执行a.show()时,我得到TypeError:“column”对象不可调用 想知道是否有与pandas功能相当的pyspark,以便在将列转换为pyspark数据帧后使用show() 长版本: 我将以下数据设置为df: +----------+-------------------+--------+ | number| p_efc_dtm|
pyspark.sql.column.column
的对象a
,当我执行a.show()
时,我得到TypeError:“column”对象不可调用
想知道是否有与pandas功能相当的pyspark,以便在将列转换为pyspark数据帧后使用show()
长版本:
我将以下数据设置为df
:
+----------+-------------------+--------+
| number| p_efc_dtm|cus_type|
+----------+-------------------+--------+
|0000000000|2010-05-25 00:05:10| 1|
|0015195163|2013-01-03 19:01:10| 1|
|0018283269|2006-10-01 00:10:09| 1|
|0018988813|2012-11-29 17:11:45| 1|
|0020095510|2012-03-09 09:03:44| 1|
|0023688381|2008-03-13 00:03:51| 1|
|0024651256|2009-09-22 00:09:09| 1|
|0025647711|2015-01-13 18:01:27| 1|
+----------+--------------------+--------+
在df
from pyspark.sql.window import Window
import pyspark.sql.functions as F
ws = Window.partitionBy(df['number']).orderBy(df['p_efc_dtm'].desc())
a = F.max(df['p_efc_dtm']).over(ws)
如何查看a
的内容
我使用的是Spark 1.6.0 atm。您这样做是错误的
a = F.max(df['p_efc_dtm']).over(ws)
a
只是对max函数调用的引用
你应该做什么
a = df.select(F.max(df['p_efc_dtm']).over(ws))
然后a.show()
应该可以工作了
如果您想查看下面评论中提到的number
列,则可以选择作为
a = df.select(df['number'], F.max(df['p_efc_dtm']).over(ws).alias('dtm'))
或者,如果希望查看所有原始列,则可以使用with column
作为
a = df.withColumn('dtm', F.max(df['p_efc_dtm']).over(ws))
你这样做是错的
a = F.max(df['p_efc_dtm']).over(ws)
a
只是对max函数调用的引用
你应该做什么
a = df.select(F.max(df['p_efc_dtm']).over(ws))
然后a.show()
应该可以工作了
如果您想查看下面评论中提到的number
列,则可以选择作为
a = df.select(df['number'], F.max(df['p_efc_dtm']).over(ws).alias('dtm'))
或者,如果希望查看所有原始列,则可以使用with column
作为
a = df.withColumn('dtm', F.max(df['p_efc_dtm']).over(ws))
为了补充@Ramesh的答案,如果有人想要预览数据框中的pyspark列:df.select()
df.select('number').show()
为了补充@Ramesh的答案,如果有人想要预览数据框中的pyspark列:df.select()
df.select('number').show()
谢谢,有两点需要说明:1)在(ws)
上的a=F.max(df['p\u efc\u dtm'])类型是pyspark.sql.column.column
,这有点误导。我当时还以为是指某个专栏。2) 我有没有办法看到number
列和dtm
值?我想知道a=df.select([F.max(df['p\u efc\u dtm'])over(ws),'number'])
是否将相应的数字返回到dtm
值。谢谢,两个注释:1)类型a=F.max(df['p\u efc\u dtm'])。over(ws)
是pyspark.sql.column.column
,这有点误导。我当时还以为是指某个专栏。2) 我有没有办法看到number
列和dtm
值?我想知道a=df.select([F.max(df['p\u efc\u dtm'])。over(ws),'number'])
是否将相应的数字返回到dtm
值。