<p>不要使用任何循环。合并数据帧并使用<code>numpy.where</code>和{<cd2>}</p>
<h2>把事情安排好</h2>
<pre><code>from io import StringIO
import numpy
import pandas
d1 = StringIO("""\
wrds_id isin_code gvkey gvkey_new
0 1004 US0003611052 1004.0 1004.0
1 1005 US1948302047 Nan 1000.0
2 1006 US1948302047 Nan 1004.0
3 1007 US0309541011 Nan 1004.0
4 1007 US0003611052 1004.0 1004.0
5 1008 IL0006046119 Nan 1004.0
6 1008 US0003611052 1004.0 1004.0
7 1009 US4448591028 Nan 1004.0
8 1004 US4448591028 Nan 1004.0
9 1004 US4448591028 Nan 1004.0
10 1013 US0008861017 1013.0 1013.0
11 1013 BE0003755692 Nan 1013.0
12 1013 BE0003755692 Nan 1013.0
""")
d2 = StringIO("""\
isin_code gvkey_ciq_new
0 US0309541011 1485.0
1 IL0006046119 2018.0
3 US1948302047 3176.0
4 US2376881064 3760.0
5 BE0003755692 5150.0
7 US4448591028 5776.0
9 GB0004544929 5898.0
""")
df1 = pandas.read_table(d1, sep='\s+', na_values=['Nan'])
df2 = pandas.read_table(d2, sep='\s+', na_values=['Nan'])
</code></pre>
<h2>合并并计算最后一列</h2>
^{pr2}$
<h2>这给了我:</h2>
<pre><code> wrds_id isin_code gvkey gvkey_new
0 1004 US0003611052 1004.0 1004.0
1 1005 US1948302047 3176.0 1000.0
2 1006 US1948302047 3176.0 1004.0
3 1007 US0309541011 1485.0 1004.0
4 1007 US0003611052 1004.0 1004.0
5 1008 IL0006046119 2018.0 1004.0
6 1008 US0003611052 1004.0 1004.0
7 1009 US4448591028 5776.0 1004.0
8 1004 US4448591028 5776.0 1004.0
9 1004 US4448591028 5776.0 1004.0
10 1013 US0008861017 1013.0 1013.0
11 1013 BE0003755692 5150.0 1013.0
12 1013 BE0003755692 5150.0 1013.0
</code></pre>