擅长:python、mysql、java
<p>这个答案假设<code>DOB</code>是<code>datetime</code>:</p>
<pre><code>year = df.DOB.dt.year
nums = df.UID.astype(str).str.zfill(7)
df.assign(TID=[f'{y}-{num}-P' for y, num in zip(year, nums)])
</code></pre>
<p/>
<pre><code> UID DOB BEDNUM TID
0 0 1900-01-01 CICU1 1900-0000000-P
1 1 1927-05-21 CICU1 1927-0000001-P
2 2 1929-10-03 CICU1 1929-0000002-P
3 3 1933-06-29 CICU1 1933-0000003-P
4 4 1936-01-09 CICU1 1936-0000004-P
5 5 1947-11-14 CICU1 1947-0000005-P
6 6 1900-01-01 CICU1 1900-0000006-P
7 7 1927-05-21 CICU1 1927-0000007-P
8 8 1929-10-03 CICU1 1929-0000008-P
9 9 1933-06-29 CICU1 1933-0000009-P
10 10 1936-01-09 CICU1 1936-0000010-P
11 11 1947-11-14 CICU1 1947-0000011-P
</code></pre>