擅长:python、mysql、java
<p>因为Python没有<code>&&</code>运算符,所以会出现<code>SyntaxError</code>错误异常。它有<code>and</code>和<code>&</code>,后者是在<code>Column</code>上创建布尔表达式的正确选择(逻辑析取是<code>|</code>,逻辑否定是<code>~</code>)。</p>
<p>您创建的条件也无效,因为它不考虑<a href="https://docs.python.org/3/reference/expressions.html#operator-precedence" rel="noreferrer">operator precedence</a>。^Python中的{<cd4>}比<code>==</code>具有更高的优先级,因此表达式必须用括号括起来。</p>
<pre><code>(col("Age") == "") & (col("Survived") == "0")
## Column<b'((Age = ) AND (Survived = 0))'>
</code></pre>
<p>另一方面,<code>when</code>函数相当于<code>case</code>表达式而不是<code>WHEN</code>子句。仍然适用同样的规则。连词:</p>
<pre><code>df.where((col("foo") > 0) & (col("bar") < 0))
</code></pre>
<p>分离:</p>
<pre><code>df.where((col("foo") > 0) | (col("bar") < 0))
</code></pre>
<p>当然,您可以单独定义条件以避免出现括号:</p>
<pre><code>cond1 = col("Age") == ""
cond2 = col("Survived") == "0"
cond1 & cond2
</code></pre>