<p>方法1:</p>
<p>试试<code>bfill</code>和<code>.iloc</code></p>
<pre><code>df[payday_cols].bfill(1).iloc[:,0]
Out[92]:
1 3.3.3.2.2
2 NaN
3 3.3.3.2.1
4 NaN
26815 3.3.3.2.1
26816 NaN
Name: flag_3.3.3.2.1, dtype: object
</code></pre>
<hr/>
<p>方法2:</p>
<p>另一种解决方案是在<code>notna</code>上使用numpy <code>argmax</code>,并将结果传递给<code>lookup</code></p>
<pre><code>m = df[payday_cols].notna().values.argmax(1)
df[payday_cols].lookup(df.index, np.array(payday_cols)[m])
Out[145]: array(['3.3.3.2.2', nan, '3.3.3.2.1', nan, '3.3.3.2.1', nan], dtype=object)
</code></pre>
<hr/>
<p>注:输出基于此示例</p>
<pre><code>In [83]: df
Out[83]:
id_number createdat flag_3.3.3.2.1 flag_3.3.3.2.2 flag_3.3.3.3.1
1 718v 2019-08-14 NaN 3.3.3.2.2 3.3.3.3.1
2 566m 2019-07-10 NaN NaN NaN
3 636p 2019-06-12 3.3.3.2.1 NaN 3.3.3.3.1
4 630r 2019-06-30 NaN NaN NaN
26815 066p 2019-08-24 3.3.3.2.1 3.3.3.2.2 3.3.3.3.1
26816 769b 2019-08-10 NaN NaN NaN
</code></pre>