pyspark 数据框列名

pyspark dataframe column name

pyspark 数据框列名称的限制是什么。我对以下代码有疑问 ..

%livy.pyspark
df_context_spark.agg({'spatialElementLabel.value': 'count'})

它给...

u'Cannot resolve column name "spatialElementLabel.value" among (lightFixtureID.value, spatialElementLabel.value);'

列名显然输入正确。我通过从 pandas 数据帧转换得到数据帧。列名字符串中的点有问题吗?

点用于结构类型中的嵌套字段。因此,如果您有一个名为 "address" 的 StructType 类型的列,并且在该列中有 street1、street2 等,您将访问它的各个字段,如下所示:

df.select("address.street1", "address.street2", ..)

因此,如果您想在字段名称中使用点,则需要在引用该字段时用引号引起来。例如:

from pyspark.sql.types import *

schema = StructType([StructField("my.field", StringType())])

rdd = sc.parallelize([('hello',), ('world',)])
df = sqlContext.createDataFrame(rdd, schema)

# Using backticks to quote the field name
df.select("`my.field`").show()