2017-06-07 6 views
0

pysparkデータフレーム列名にはどのような制限がありますか。私はpysparkデータフレーム列名

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

それが与える...

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

列名が明らかに正しく入力されて...次のコードで問題があります。私はpandasデータフレームからの変換によってデータフレームを得ました。それは、列名文字列にドットの問題がありますか?

答えて

1

ドットは、構造タイプ内のネストされたフィールドに使用されます。だから、型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() 
+0

ありがとうございます!最後に、列の名前を変更し、列名にドットを取り除くことにしました。私はちょうどあなたの提案がうまく働くことを確認することができます。 –

関連する問題