<p>尝试<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html" rel="nofollow">merge()</a>:</p>
<pre><code>merge = df.merge(dfReplace, left_on='id1', right_on='id2', how='left')
print(merge)
merge.ix[(merge.id1 == merge.id2), 'value1'] = merge.value2
print(merge)
del merge['id2']
del merge['value2']
print(merge)
</code></pre>
<p>输出:</p>
<pre><code> id1 value1 value3 id2 value2
0 1001 a yes 1001 rep1
1 1002 b no 1002 rep2
2 1001 c yes 1001 rep1
3 1003 d no NaN NaN
4 1004 e no NaN NaN
5 1005 f no NaN NaN
6 1002 g yes 1002 rep2
7 1006 h no NaN NaN
id1 value1 value3 id2 value2
0 1001 rep1 yes 1001 rep1
1 1002 rep2 no 1002 rep2
2 1001 rep1 yes 1001 rep1
3 1003 d no NaN NaN
4 1004 e no NaN NaN
5 1005 f no NaN NaN
6 1002 rep2 yes 1002 rep2
7 1006 h no NaN NaN
id1 value1 value3
0 1001 rep1 yes
1 1002 rep2 no
2 1001 rep1 yes
3 1003 d no
4 1004 e no
5 1005 f no
6 1002 rep2 yes
7 1006 h no
</code></pre>