<p>好的,假设您的(空)值实际上是NaN值,而不是该字符串,则以下操作有效:</p>
<pre><code>In [10]:
# create the merged df
merged = dfA.merge(dfB, on='date')
merged
Out[10]:
date impressions spend col_x col_y
0 2015-01-01 100000 3 ABC123456 NaN
1 2015-01-02 145000 5 ABCD00000 NaN
2 2015-01-03 300000 15 NaN DEF123456
</code></pre>
<p>您可以使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.where.html#pandas.Series.where" rel="noreferrer">^{<cd1>}</a>从x和y列有条件地分配值:</p>
<pre><code>In [11]:
# now create col_z using where
merged['col_z'] = merged['col_x'].where(merged['col_x'].notnull(), merged['col_y'])
merged
Out[11]:
date impressions spend col_x col_y col_z
0 2015-01-01 100000 3 ABC123456 NaN ABC123456
1 2015-01-02 145000 5 ABCD00000 NaN ABCD00000
2 2015-01-03 300000 15 NaN DEF123456 DEF123456
</code></pre>
<p>然后可以<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop.html#pandas.DataFrame.drop" rel="noreferrer">^{<cd2>}</a>无关列:</p>
<pre><code>In [13]:
merged = merged.drop(['col_x','col_y'],axis=1)
merged
Out[13]:
date impressions spend col_z
0 2015-01-01 100000 3 ABC123456
1 2015-01-02 145000 5 ABCD00000
2 2015-01-03 300000 15 DEF123456
</code></pre>