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

sta*_*est 5 python apache-spark apache-spark-sql pyspark

我在 python 中有一个带有嵌套列的 Spark DataFrame,并且有 path a.b.c,并且想要检查c之后是否有一个名为d的嵌套列,所以是否a.b.c.d存在。

简单查了一下df.columns['a']['b']['c']['d']ordf.columns['a.b.c.d']好像不行,于是发现该df.schema功能可以用。所以我只是迭代例如:

y = df.schema['a'].dataType['b'].dataType['c'].dataType
Run Code Online (Sandbox Code Playgroud)

然后通常应该检查d是否在y中。

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

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

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

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

Abd*_*nan 0

df.schema.simpleString().find("column_name:")
Run Code Online (Sandbox Code Playgroud)

或者

"column_name:" in df.schema.simpleString()
Run Code Online (Sandbox Code Playgroud)

  • 答案需要支持信息 您的答案可以通过附加支持信息来改进。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](https://stackoverflow.com/help/how-to-answer)找到有关如何编写良好答案的更多信息。 (2认同)