擅长:python、mysql、java
<p>你说:</p>
<blockquote>
<p>the third comparison between column 'c' and 'd' which is between value 6 and 0 should be:</p>
<pre><code>0/6 *12.5 + 12.5 = 12.5
</code></pre>
</blockquote>
<p>但你的代码说:</p>
<blockquote>
<pre><code> conditions = [(df[col1] == 0) & (df[col2] == 0), (df[col1] != 0) & (df[col2] == 0), (df[col1] == df[col2]),
(df[col1] != 0) & (df[col2] != 0)]
choices = [np.nan , 100 , coeff[col1] , df[col2]/df[col1]*coeff[col1]+coeff[col1]]
</code></pre>
</blockquote>
<p>显然<code>(6, 0)</code>满足{<cd2>},因此产生{<cd3>}。您似乎认为它应该满足<code>condition[3]</code>,也就是说两者都不是零,但是<code>(6, 0)</code>不满足这个条件,即使满足了,它也不重要,因为{<cd2>}首先匹配,而{<cd7>}选择第一个匹配。在</p>
<p>也许你想要这样的东西:</p>
<pre><code> conditions = [(df[col1] == 0) & (df[col2] == 0), (df[col1] == df[col2])]
choices = [np.nan , coeff[col1]]
default = df[col2]/df[col1]*coeff[col1]+coeff[col1]
df['comp{}'.format(i)] = np.select(conditions , choices, default)
</code></pre>