Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查Spark数据帧中的StructType中是否存在元素_Python_Apache Spark_Pyspark_Spark Dataframe - Fatal编程技术网

Python 检查Spark数据帧中的StructType中是否存在元素

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中 我做这件

在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

我做这件事的方法就是尝试
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中没有quick
Try
作为选项函数(据我所知,这就是我试图避免的全部内容),并且没有嵌套列的解决方案。