查看Spark Dataframe列的内容

Joh*_*Lin 28 python dataframe apache-spark pyspark

我正在使用Spark 1.3.1.

我试图在Python中查看Spark数据帧列的值.使用Spark数据帧,我可以df.collect()查看数据帧的内容,但是我没有看到Spark数据帧列的最佳方法.

例如,数据框df包含一个名为的列'zip_code'.所以我可以做df['zip_code'],它变成了一个pyspark.sql.dataframe.Column类型,但我找不到一种方法来查看值df['zip_code'].

zer*_*323 35

您可以访问底层RDD并映射它

df.rdd.map(lambda r: r.zip_code).collect()
Run Code Online (Sandbox Code Playgroud)

select如果您不介意使用Row对象包装的结果,也可以使用:

df.select('zip_code').collect()
Run Code Online (Sandbox Code Playgroud)

最后,如果您只是想检查内容,那么show方法就足够了:

df.select('zip_code').show()
Run Code Online (Sandbox Code Playgroud)

  • @JordanPilat你不知道。“列”不受任何执行计划的限制。它不过是一个符号。 (4认同)
  • 好答案!澄清一下,“Column”本身不包含任何数据,仅表示_1个或更多_特定“DataFrame”列的一系列_0个或更多_转换。因此,在生成它的“DataFrame”上下文之外引用它是没有意义的。正确的? (3认同)
  • 这里有问题的**不是,_“如何查看**数据框**的内容,但仅查看其中一列?” _,而是_“给出类型为**的对象列**,并且没有类型为“数据框”的对象,如何查看该“列”的内容?_ (2认同)
  • @JordanPilat它可以从一个表达式构建,但在一天结束时它没有任何意义.考虑一下:`$"foo"`.它创建了一个类`ColumnName`的对象,它是`Column`的子类.一个人没有任何意义.我可以使用不同的DF来评估它并获得不同的结果(或例外).如果你曾经使用R想想`formula`. (2认同)

Cic*_*lio 8

你可以简单地写:

df.select('your column's name').show()
Run Code Online (Sandbox Code Playgroud)

在你的例子中,它将是:

df.select('zip_code').show()
Run Code Online (Sandbox Code Playgroud)


Tho*_*aux 5

查看完整内容:

df.select("raw").take(1).foreach(println)
Run Code Online (Sandbox Code Playgroud)

show将向您展示概述)。