2016-07-05 64 views
0

可以說我有一個DF這樣的:如何行從一個DF複製到另一個匹配值

A  B 
0 John 131234 
1 Sam 3454 
2 Mandy 6521 
3 Frank 134536 

而另一DF:

X  Y  Z 
0 Erick Green Pencil 
1 Sam Red  Phone 
2 David Orange PC 
3 Mandy Blue Notebook 

我如何可以複製的行和列從一個DF到另一個匹配值?

我想要的DF是:

A  B  Y  Z 
0 John 131234 
1 Sam 3454  Red  Phone 
2 Mandy 6521  Blue Notebook 
3 Frank 134536 

我是新來的Python和熊貓,我仍然不知道熱去做。

感謝。

回答

0

使用熊貓merge加盟:

df 
Out[24]: 
     A  B 
0 John 131234 
1 Sam 3454 
2 Mandy 6521 
3 Frank 134536 

df1 
Out[25]: 
     X  Y   Z 
0 Erick Green Pencil 
1 Sam  Red  Phone 
2 David Orange  PC 
3 Mandy Blue Notebook 

    df.merge(df1,left_on='A',right_on='X',how='left').drop('X',1).fillna('') 
Out[26]: 
     A  B  Y   Z 
0 John 131234     
1 Sam 3454 Red  Phone 
2 Mandy 6521 Blue Notebook 
3 Frank 134536     
+0

這只是我需要的。這很簡單,但我仍然在學習。謝謝。 –

0
import pandas as pd 
import numpy as np 

df0 = pd.DataFrame(np.array([ 
     ('John', 131234), 
     ('Sam', 3454), 
     ('Mandy', 6521), 
     ('Frank', 134536) 
    ]), 
    columns=['A', 'B'] 
) 

df1 = pd.DataFrame(np.array([ 
     ('Erick', 'Green', 'Pencil'), 
     ('Sam', 'Red',  'Phone'), 
     ('David', 'Orange', 'PC'), 
     ('Mandy', 'Blue', 'Notebook') 
    ]), 
    columns=['X', 'Y', 'Z'] 
) 

# join the two dataframes on the 'name' 
# left join into preserve all rows in 'df0' 
df = pd.merge(df0, df1, left_on='A', right_on='X', how='left') 

# drop the duplicate name column 
df.drop('X', axis=1) 
+0

謝謝你,這對我的作品,但我發現shivsn回答更方便了我,所以我得把它給他。感謝您的幫助,我會記住您的答案。 –

相關問題