PySpark如何从DataFrame模式的StructType对象中解析并获取字段名

4
我已从Hive表创建了Dataframe,并希望检索字段/列名称。
>>>a=df.schema
>>>a
StructType(List(StructField(empid, IntegerType, true), StructField(empname,StringType, true)))

我该如何从这个对象中检索字段名(empid,empname)?
2个回答

14
使用 pyspark.sql.types.StructType.fieldnames

fieldNames()

Returns all field names in a list.

>>> struct = StructType([StructField("f1", StringType(), True)])
>>> struct.fieldNames()
['f1']

2
这确实很难找,我已经花了2个小时了,非常感谢! - windsound

1
你也可以使用 df.columns 以列表形式获取列名。
>>> spark.version
u'2.4.0.cloudera2'
>>>
>>> df=spark.sql("select 10 empid, 's' empname from range(1)")

>>> df.schema
StructType(List(StructField(empid,IntegerType,false),StructField(empname,StringType,false)))

>>> df.schema.fieldNames()
['empid', 'empname']

>>> df.columns
['empid', 'empname']
>>>

你回答了一个不同的、更琐碎的问题。 - ciurlaro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接