2016-12-04 88 views
2

我有一個數據幀df包含新IDs而在dfOld我有新與舊之間的corresponce IDs熊貓:如何合併兩列與第二個DataFrame?

df 
    ID1new ID2new 
0 5  3 
1 4  2 
2 3  7 


dfOld 

    IDold IDnew 
0 33  0 
1 78  1 
2 65  2 
3 12  3 
4 24  4 
5 89  5 
6 77  6 
7 16  7 
8 69  8 

我想兩列添加到df包含舊IDsID1newID2new,所以

df1 
    ID1new ID2new ID1old ID2old 
0 5  3   89  12 
1 4  2   24  65 
2 3  7   12  16 

我很殘忍地做着這樣的循環:

df1 = df 
df1['ID1old']=0 
df1['ID2old']=0 
for i in net.index: 
    tmp = dfOld[dfOld.IDnew == df.ID1new[i]] 
    tmp0 = dfOld[dfOld.IDnew == df.ID2new[i]] 
    net.ID1old[i] = tmp.IDold[tmp.index[0]] 
    net.ID1old[i] = tmp0.IDold[tmp0.index[0]] 
+0

看看這個:http://pandas.pydata.org/pandas-docs/stable/merging.html – displayname

回答

1

可以使用map通過dictdSeriess

d = dfOld.set_index('IDnew')['IDold'].to_dict() 
print (d) 
{0: 33, 1: 78, 2: 65, 3: 12, 4: 24, 5: 89, 6: 77, 7: 16, 8: 69} 

#s = dfOld.set_index('IDnew')['IDold'] 

df['ID1old'] = df.ID1new.map(d) 
df['ID2old'] = df.ID2new.map(d) 
print (df) 
    ID1new ID2new ID1old ID2old 
0  5  3  89  12 
1  4  2  24  65 
2  3  7  12  16