2015-12-03 44 views
1

我有两个类似的dataframes UU1如何基于python中的几个值对两个数据框进行分组?

U 
    ID1  ID2 Time A Friends Distance 
0 John Tom  2   1 4 
1 Alex John  2   0 2 
2 Alex Paul  5   1 3 
3 Frank Richard 1   0 5 

U1 
    ID1  ID2 Time B Friends Distance 
0 John Richard 2   1 0 
1 Alex Frank 2   0 1 
2 Alex Paul  3   1 3 
3 Frank Richard 2   0 5 

我想有一个数据帧,基于Time ATime B结合ID1ID2

U2 
    ID1  ID2  Time A Time B Friends Distance 
0 John Tom  2   0  1 4 
1 Alex John  2   0  0 2 
2 Alex Paul  5   3  1 5 
3 Frank Richard 1   2  0 5 
4 John Richard 0   2  1 3 
5 Alex Frank 0   2  0 1 
+0

您可以根据条件使用combine()。来自熊猫[docs](http://pandas.pydata.org/pandas-docs/stable/basics.html#general-dataframe-combine)。还是你的意思是加入/合并操作? – pazitos10

+0

我想结合他们 – emax

+0

然后你必须建立条件来结合他们,如在文档中所解释的。 – pazitos10

回答

1

IIUC可以使用mergecombine_first。最后删除后缀为_new的列,并填写0而不是NaN

U2 = pd.merge(U,U1, on=['ID1', 'ID2'], how='outer', suffixes=('_new', '')) 
U2 = U2.combine_first(U) 
U2 = U2.drop(['Friends_new','Distance_new'], axis=1).fillna(0) 
U2 = U2[['ID1', 'ID2', 'Time A', 'Time B', 'Friends', 'Distance']] 
print U2 
    ID1  ID2 Time A Time B Friends Distance 
0 John  Tom  2  0  1   4 
1 Alex  John  2  0  0   2 
2 Alex  Paul  5  3  1   3 
3 Frank Richard  1  2  0   5 
4 John Richard  0  2  1   0 
5 Alex Frank  0  2  0   1 
+0

你的意思是U2 = U1.combine_first(U)? – emax

+0

是的,你是对的,我纠正它。 – jezrael

相关问题