2016-07-05 4 views
0

Lets sagen, dass ich ein df wie dieses:Wie Zeilen aus einer df auf ein anderes kopieren mit dem Wert passenden

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

Und ein anderes df:

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

Wie kann ich die Zeilen und Spalten kopieren von einem df zum anderen mit passenden Werten?

Mein Wunsch df wäre:

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

Ich bin neu in Python und Pandas und ich habe immer noch keine Ahnung, heiß, es zu tun.

Danke.

Antwort

0

Verwendung Pandas merge für den Beitritt:

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

Das macht genau das, was ich brauche. Es war so einfach, aber ich lerne immer noch. Vielen Dank. –

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

Danke, das funktioniert für mich, aber ich shivsn mir antworten finden bequemer, also werde ich es ihm geben müssen. Danke für Ihre Hilfe, ich werde Ihre Antwort berücksichtigen. –

Verwandte Themen