2016-07-05 62 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回答更方便了我,所以我得把它给他。感谢您的帮助,我会记住您的答案。 –

相关问题