擅长:python、mysql、java
<p>为了可读性,分别构建每个结果,然后将各个部分连接在一起。你知道吗</p>
<pre><code>u_id = df.B_ID.astype(str).where(df.B_UTYPE.eq('SCI'))
u_cd = df.B_ID.map(ucode.set_index('U_ID').U_CD.astype(str))
ncol = (df.B_ID.astype(str)
.str.extract(r'(\d{3})(\d+)')
.where(df.B_UTYPE.eq('MAT'))
.rename(columns=lambda x: f'N_COL{x+1}'))
df = pd.concat([df, u_id, u_cd, ncol], axis=1)
print(df)
B_IDX B_NAME B_AUTHOR B_PRICE B_UTYPE B_ID B_ID B_ID N_COL1 N_COL2
0 1 ABC aaa 12.21 SCI 182 182 9982825 NaN NaN
1 2 BCD bbb 98.00 ECN 920 NaN NaN NaN NaN
2 3 CDE ccc 22.34 SCI 228 228 9999983 NaN NaN
3 4 DEF ddd 44.11 LIT 761 NaN NaN NaN NaN
4 5 EFG eee 0.99 MAT 10242 NaN NaN 102 42
5 6 FGH fff 4.99 MAT 77721 NaN NaN 777 21
</code></pre>