gpt4 book ai didi

python - PySpark dataframe - 如何将字符串变量传递给 df.where() 条件

转载 作者:行者123 更新时间:2023-12-05 05:19:34 24 4
gpt4 key购买 nike

我不确定这在 pyspark 中是否可行。我相信应该只是我没有在这里获胜:(。

要求:带上任何 FNAME 和 LNAME 为空或 0 的记录

预期结果:结果是前两行。

df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load(fileName)
df.show()

+------+-------+------+
| FNAME| LNAME| CITY|
+------+-------+------+
| 0| null| NY|
| null| 0| null|
| Joe| null| LA|
| null| Deon| SA|
| Steve| Mark| null|
+------+-------+------+

colCondition = []
for col in df.columns:
condition = '(df.'+col+'.isNull() | df.'+col+' == 0)'
colCondition.append(condition)

dfWhereConditon = ' & '.join(colList)

这是我想要实现的:

df.where(dfWhereConditon)

这不起作用,因为 dfWhereCondition 在 where 条件中被视为字符串。我该如何解决这个问题,或者是否有更好的方法来实现这一目标。

谢谢

最佳答案

如果您想使用字符串条件,您可以使用 SQL 过滤子句:

condition = ' AND '.join(['('+ col + ' IS NULL OR ' + col + ' = 0)' for col in df.columns])
df.filter(condition)

关于python - PySpark dataframe - 如何将字符串变量传递给 df.where() 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45813272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com