<p>您可以使用布尔索引分别应用这两种情况,检查<code>vdu_num</code>是否为NaN</p>
<pre><code>df.loc[~vdu_num.isna(), 'vm']=df['Unit'].str.cat(unit_num, sep="_").str.cat(vdu_num, sep="_")
df.loc[vdu_num.isna(), 'vm']=df['Unit'].str.cat(unit_num, sep="_")
</code></pre>
<p>产生</p>
<pre><code> resource Node Unit unit_num vdu_num vm
-
0 MTUG1_ABO_DPP_1 MTUG1 DPP 1 nan DPP_1
1 MTUG1_ABO_DPP_2 MTUG1 DPP 2 nan DPP_2
2 MTUG1_ABO_DPP_3 MTUG1 DPP 3 nan DPP_3
3 MTUG1_ABO_DPP_4 MTUG1 DPP 4 nan DPP_4
4 MTUG1_ABO_DPP_5 MTUG1 DPP 5 nan DPP_5
5 MTUG1_ABO_DPU_1 MTUG1 DPU 1 nan DPU_1
6 MTUG1_ABO_DPU_2 MTUG1 DPU 2 nan DPU_2
7 MTUG1_ABO_DPU_3 MTUG1 DPU 3 nan DPU_3
8 MTUG1_ABO_UUB_VDU1_1 MTUG1 UUB VDU1 1 UUB_VDU1_1
9 MTUG1_ABO_UUB_VDU1_2 MTUG1 UUB VDU1 2 UUB_VDU1_2
10 MTUG1_ABO_UUB_VDU1_3 MTUG1 UUB VDU1 3 UUB_VDU1_3
11 MTUG1_ABO_UUB_VDU2_1 MTUG1 UUB VDU2 1 UUB_VDU2_1
12 MTUG1_ABO_UUB_VDU2_2 MTUG1 UUB VDU2 2 UUB_VDU2_2
</code></pre>