<p>外部合并应该起作用。根据@BENY的评论和回答,我们需要解决密钥的非唯一性问题:</p>
<pre><code>>>> df2 = IndiRelat.rename(columns={0: 'Indicator'})
>>> df2['dedup_indic'] = df2.groupby('Indicator').cumcount()
>>> df = inp.join(inp.groupby('Indicator').cumcount().rename('dedup_indic'))\
... .merge(df2, how='outer')
>>> df
Key Descr C1 C2 C3 C4 C5 C6 Indicator dedup_indic
0 2.0 cvt -3.0 5.0 17.0 -2.0 -9.0 -0.2 RL 0
1 2.0 cv 0.0 0.0 0.0 0.0 0.0 0.0 LL 0
2 2.0 sope 0.0 0.0 0.0 0.0 0.0 0.0 SD 0
3 2.0 wix+ -13.0 -13.0 2.0 1.0 -62.0 -0.5 WI 0
4 2.0 wix- 0.0 16.0 6.0 13.0 0.0 0.3 WI 1
5 4.0 sope -42.0 0.0 29.0 0.0 0.0 -13.0 SD 1
6 4.0 cv 0.0 0.0 0.0 0.0 0.0 0.0 LL 1
7 4.0 cvt 0.0 0.0 0.0 0.0 0.0 -1.0 RL 1
8 4.0 wix+ -18.0 -2.0 19.0 19.0 3.0 -64.0 WI 2
9 4.0 wix- 0.0 -30.0 -2.0 -2.0 32.0 0.0 WI 3
10 NaN NaN NaN NaN NaN NaN NaN NaN SS 0
11 NaN NaN NaN NaN NaN NaN NaN NaN RR 0
12 NaN NaN NaN NaN NaN NaN NaN NaN QU 0
13 NaN NaN NaN NaN NaN NaN NaN NaN QU 1
>>> df.fillna(0).drop(columns=['dedup_indic'])
Key Descr C1 C2 C3 C4 C5 C6 Indicator
0 2.0 cvt -3.0 5.0 17.0 -2.0 -9.0 -0.2 RL
1 2.0 cv 0.0 0.0 0.0 0.0 0.0 0.0 LL
2 2.0 sope 0.0 0.0 0.0 0.0 0.0 0.0 SD
3 2.0 wix+ -13.0 -13.0 2.0 1.0 -62.0 -0.5 WI
4 2.0 wix- 0.0 16.0 6.0 13.0 0.0 0.3 WI
5 4.0 sope -42.0 0.0 29.0 0.0 0.0 -13.0 SD
6 4.0 cv 0.0 0.0 0.0 0.0 0.0 0.0 LL
7 4.0 cvt 0.0 0.0 0.0 0.0 0.0 -1.0 RL
8 4.0 wix+ -18.0 -2.0 19.0 19.0 3.0 -64.0 WI
9 4.0 wix- 0.0 -30.0 -2.0 -2.0 32.0 0.0 WI
10 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 SS
11 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 RR
12 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 QU
13 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 QU
</code></pre>