我有一个 pyspark 数据框,其中有一列值为字符串 json。如何计算与字典内列表中某个值匹配的值并作为列报告?
例如,下面是数据框:
+---------------------------------------------------------------------------+
|col |
+---------------------------------------------------------------------------+
|{"field":{"list":[{"item":1,"upgrade":false},{"item":2,"upgrade":true}]}}
+----------------------------------------------------------------------------+
|{"field":{"list":[{"item":1,"upgrade":false},{"item":2,"upgrade":false}]}}
+--------------------------------------------------------------------------+
我想计算列表中有多少“升级”键是假的。
所以理想的数据框看起来像这样:
+---------------------------------------------------------------------------+----------------+
|col | upgrade_false
+---------------------------------------------------------------------------+-----------------+
|{"field":{"list":[{"item":1,"upgrade":false},{"item":2,"upgrade":true}]}} | 1
+----------------------------------------------------------------------------+----------------+
|{"field":{"list":[{"item":1,"upgrade":false},{"item":2,"upgrade":false}]}} | 2
+----------------------------------------------------------------------------+-----------------+
提前致谢。
最简单的方法大概就是数一下"upgrade":false
已经出现的次数。那么我们根本不需要解析json:
import pyspark.sql.functions as F
df2 = df.withColumn('upgrade_false', F.size(F.split('col', '"upgrade":false')) - 1)
df2.show()
+--------------------+-------------+
| col|upgrade_false|
+--------------------+-------------+
|{"field":{"list":...| 1|
|{"field":{"list":...| 2|
+--------------------+-------------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句