<p>今天我有点奇怪。我需要创建一个基于if语句序列的列表。我的数据帧如下所示:</p>
<pre><code>prom_lect4b_rbd prom_lect2m_rbd prom_lect8b_rbd prom_lect6b_rbd
100 np.nan 80 200
np.nan np.nan 40 1000
np.nan np.nan np.nan 90
230 100 80 100
</code></pre>
<p>列是根据优先级排序的。我试图创建的列表(或列)从那些不是<code>nan</code>的行中获取第一个值。所以,在这个例子中,我想要一个如下所示的列:</p>
<pre><code>simce_final_lect
100
40
90
230
</code></pre>
<p>我尝试了以下方法:</p>
<pre><code>cols=[simces.prom_lect4b_rbd, simces.prom_lect2m_rbd, simces.prom_lect8b_rbd, simces.prom_lect6b_rbd]
simce_final_lect=[j if np.isnan(j)==False else k if np.isnan(k)==False
else l if np.isnan(l)==False else m if np.isnan(m)==False
else np.nan for j,k,l,m in zip(cols[0],cols[1],cols[2],cols[3])]
</code></pre>
<p>它只是将两个值(8752个值中的两个)复制到列表中。但是如果我将我的zip限制为<code>j,k,l</code>,它就可以完美地工作:</p>
<pre><code>simce_final_lect=[j if np.isnan(j)==False else k if np.isnan(k)==False
else l if np.isnan(l)==False
else np.nan for j,k,l in zip(cols[0],cols[1],cols[2])]
</code></pre>
<p>你知道发生了什么事吗?否则,有没有更有效的办法来解决我的问题?你知道吗</p>