我不确定这是否可行。我有两个数据帧df1和df2,如下所示:
df1 df2
id value id value
a 5 a 3
c 9 b 7
d 4 c 6
f 2 d 8
e 2
f 1
他们将在现实中拥有比此处更多的条目。我想基于df1和df2中的值创建第三个数据帧df3。当写入df3时,df1中的任何值都优先于df2中的值(如果df1和df2中都存在相同的id),所以在本例中我将返回:
df3
id value
a 5
b 7
c 9
d 4
e 2
f 2
我已尝试使用df2作为基础(df2将包含整个Universe的所有id),然后覆盖df1中存在的id的值,但找不到合并语法来执行此操作。
答案 0 :(得分:1)
您可以使用combine_first
,前提是您首先制作数据框索引<table id="items">
<tbody>
<tr>
<td>East</td>
<td>N/A</td>
<td>Open</td>
<td>
<div class="cssWrapper">
<input type="image" src="item.jpg" id="img_1">
</div>
</td>
</tr>
<tr>
<td>West</td>
<td>N/A</td>
<td>Close</td>
<td>
<div class="cssWrapper">
<input type="image" src="item.jpg" id="img_2">
</div>
</td>
</tr>
</tbody>
</table>
<table style="width:100%;">
<tbody>
<tr>
<td>
<label for="addr">Address - </label>
</td>
<td>
<input id="addr" name="addr" type="text" maxlength="30" title="Enter Address">
</td>
</tr>
</tbody>
</table>
(以便id
与values
对齐):
id
既然你提到了合并,你可能会对此感兴趣
您可以在In [80]: df1.set_index('id').combine_first(df2.set_index('id')).reset_index()
Out[80]:
id value
0 a 5.0
1 b 7.0
2 c 9.0
3 d 4.0
4 e 2.0
5 f 2.0
上合并df1
和df2
,然后使用id
替换fillna
df1
列中的NaN使用value
的值列中的值:
df2
产生相同的结果,但第一种方法更简单。