2016-05-15 53 views
-2

我有兩個差異幀添加新的排名列

df1.csv

Reg1 Reg2 
aaa eee 
bbb fff 
ccc ggg 
ddd hhh 

df2.csv

Reg,Rank 
aaa,1 
bbb,3 
ccc,4 
ddd,5 
eee,7 
fff,9 
ggg,10 
hhh,11 

newfram.csv

Reg1,Rank1,Reg2,Rank2 
aaa,1,eee,7 
bbb,3,fff,9 
ccc,4,ggg,10 
ddd,5,hhh,11 

我如何實現新的數據數據框?

+0

你能解決你的格式嗎? [請參閱格式指南](http://stackoverflow.com/editing-help) – miradulo

回答

1

您可以通過dictionaryd['Rank']使用concatmap

d = df2.set_index('Reg').to_dict() 
print d['Rank'] 
{'aaa': 1, 'bbb': 3, 'ggg': 10, 'eee': 7, 'fff': 9, 'hhh': 11, 'ccc': 4, 'ddd': 5} 


df = pd.concat([df1.Reg1, df1.Reg1.map(d['Rank']), df1.Reg2, df1.Reg2.map(d['Rank'])], 
       axis=1, 
       keys=['Reg1','Rank1','Reg2','Rank2']) 
print df 
    Reg1 Rank1 Reg2 Rank2 
0 aaa  1 eee  7 
1 bbb  3 fff  9 
2 ccc  4 ggg  10 
3 ddd  5 hhh  11 

對於來自csv使用read_csv創建DataFramesdocs

+0

非常感謝jezrael –