Python 检查Spark数据帧中的StructType中是否存在元素
在python中,我有一个带有嵌套列的Spark数据框,我有路径Python 检查Spark数据帧中的StructType中是否存在元素,python,apache-spark,pyspark,spark-dataframe,Python,Apache Spark,Pyspark,Spark Dataframe,在python中,我有一个带有嵌套列的Spark数据框,我有路径a.b.c,我想检查c之后是否有一个名为d的嵌套列,因此如果a.b.c.d存在 简单地检查df.columns['a']['b']['c']['d']或df.columns['a.b.c.d']似乎不起作用,所以我发现可以使用df.schema函数。 因此,我只是重复了一遍,例如: y = df.schema['a'].dataType['b'].dataType['c'].dataType 然后应该正常检查d是否在y中 我做这件
a.b.c
,我想检查c之后是否有一个名为d的嵌套列,因此如果a.b.c.d
存在
简单地检查df.columns['a']['b']['c']['d']
或df.columns['a.b.c.d']
似乎不起作用,所以我发现可以使用df.schema
函数。
因此,我只是重复了一遍,例如:
y = df.schema['a'].dataType['b'].dataType['c'].dataType
然后应该正常检查d是否在y中
我做这件事的方法就是尝试y['d']
,如果失败了,那么它就不存在了。
但我不认为使用try是最好的方法
所以我试着检查y中的if'd
,但显然这不起作用,尽管检索元素y['d']
在它存在的情况下是有效的
y的类型是StructType(列表(StructField(d,StringType,true),…其他列))
所以我真的不知道如何正确地检查d是否在y中。当我可以检索到
y['d']
时,为什么我不能直接检查y中的'd'
?有人能帮忙吗?我也是python新手,但我找不到或想不出其他解决方案。我认为在中使用不起作用,因为schema
的数据类型是StructType
,根据文档,它包含一个StructField
列表。因此,您试图检查字符串“d”是否在StructField
的列表中。可能是重复的,我想是的,但我仍然不明白检索y['d']
的工作原理。那么,除了使用try
,是否没有简单的方法来检查这一点?引用的帖子没有多大帮助,因为在python中没有quickTry
作为选项函数(据我所知,这就是我试图避免的全部内容),并且没有嵌套列的解决方案。