擅长:python、mysql、java
<p>我相信你可以用所有列来测试每个条件,而不是循环,慢的是:</p>
<pre><code>A = 0.8
m1 = df['Qh_STA']/df['Qh_FID2'] < A
m2 = (df['Qh_STA'] + df['s1'])/df['Qh_FID2'] < A
m3 = (df['Qh_STA'] + df['s1'] + df['s2']) / df['Qh_FID2'] < A
</code></pre>
<p>如果所有条件都是<code>True</code>,则需要使用<code>AND</code>乘<code>&</code>的链列进行匹配:</p>
<pre><code>df['DO'] = (m1 & m2 & m3).astype(int)
print (df)
FID_2 STA_SID s2 s1 Qh_STA Qh_FID2 DO
14 222143.0 26040713.0 0.0 0.0 8.0 17.0 1
15 222143.0 26040713.0 0.0 8.0 6.0 17.0 0
13 222143.0 26040713.0 6.0 8.0 3.0 17.0 0
17 NaN 26033594.0 29445425.0 1707.0 5.0 NaN 0
</code></pre>