<p>好吧,看起来,<strong><em>每次</em></strong>你循环时,你评估<code>36</code>项,因为<em>对于每个循环</em>你没有选择数据帧的特定单元格,而是选择一整列</em></strong>。你知道吗</p>
<pre><code>for debt in df.gov_debt_perct_mev: # loop 36 times
# if (debt <= 60.0) is true
for og in df.output_gap_pf_sf: # loop another 36 times
# and so on for each loop you write.
</code></pre>
<p>由于要迭代数据帧中的每一行(转换为每年),并计算特定单元格中每个值的阈值,因此应在数据帧<code>df</code>上使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iterrows.html" rel="nofollow">^{<cd2>}</a>方法:</p>
<pre><code>for index, row in df.iterrows():
if row.gov_debt_perct_mev <= 60:
if (row.output_gap_pf_sf < -4.0):
reqsb.append(0)
# rest of if cases...
if (row.output_gap_pf_sf >= 1.5):
if row.diff_pg_ag > 0:
# append again..
else:
# similarly replace for loops with if
# stamements.
</code></pre>
<p>这意味着您要对每个单元格进行特定年份的评估,以确定它应该具有什么值。你知道吗</p>
<hr/>
<p>这里需要注意的是,您可能把<a href="https://wiki.python.org/moin/BitwiseOperators" rel="nofollow">binary and ^{<cd4>} operator</a>和<a href="https://docs.python.org/2/library/stdtypes.html#boolean-operations-and-or-not" rel="nofollow">logical and ^{<cd5>}</a>混淆了。你知道吗</p>
<p>在您的例子中,这实际上并不会破坏您的条件的结果,因为您正在比较<code>True & False</code>,作为数字,它的计算结果与您使用<code>&</code>或<code>and</code>的结果相同。你知道吗</p>