两个数据帧合二为一

时间:2016-08-13 21:40:39

标签: python pandas

我不确定这是否可行。我有两个数据帧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的值,但找不到合并语法来执行此操作。

1 个答案:

答案 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> (以便idvalues对齐):

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 上合并df1df2,然后使用id替换fillna df1列中的NaN使用value的值列中的值:

df2

产生相同的结果,但第一种方法更简单。