检查一个元素是否存在于Spark DataFrame的StructType中



我在python中有一个Spark DataFrame嵌套列,我有路径a.b.c,并想检查是否有一个嵌套列后c称为d,所以如果a.b.c.d存在。

简单地检查df.columns['a']['b']['c']['d']df.columns['a.b.c.d']似乎不起作用,所以我发现可以使用df.schema函数。所以我只是遍历e.g.:

y = df.schema['a'].dataType['b'].dataType['c'].dataType
然后正常检查d是否在y中。

我做的方式是简单地尝试y['d'],如果它失败了,那么它不存在。但是我不认为使用try是最好的方法。

所以我尝试检查if 'd' in y,但显然这不起作用,虽然检索元素y['d']工作,如果它存在。

y的类型是StructType(List(StructField(d,StringType,true),...other columns))

所以我真的不知道如何正确检查d是否在y中。当我可以检索y['d']时,为什么我不能直接检查if 'd' in y ?有人能帮忙吗?我也是python的新手,但我找不到或想不出另一个解决方案。

df.schema.simpleString().find("column_name:")

"column_name:" in df.schema.simpleString()

相关内容

  • 没有找到相关文章