擅长:python、mysql、java
<p>IIUC,你想根据三个ID列进行更新。这可以通过<code>merge</code>和<code>groupby</code>实现:</p>
<pre><code>new_df = df.merge(df2, on=['SID','Run ID', 'TRE ID'],
how='left', suffixes=['__x','__y'])
# update the code columns
code_cols = [col for col in new_df.columns if col[:4]=='Code']
new_df[code_cols] = new_df.filter(like='__y').notnull()*33
# groupby
new_df.groupby([x.split('__')[0] for x in new_df.columns],
sort=False,
axis=1).last()
</code></pre>
<p>输出:</p>
<pre><code> SID Run ID TRE ID Col1 Col2 Col3 Code_Col1 Code_Col2 Code_Col3
0 001S 0919A TRE001 1.0 2 3.0 0 0 0
1 002S 0919A TRE002 400.0 5 600.0 33 0 33
2 001S 0919A TRE001R 1.0 3 2.0 0 0 0
3 003S 1010A TRE003 7.0 8 900.0 0 0 33
</code></pre>