2017-05-26 9 views
1

haben zwei Datenrahmen, sagen df1 und df2.Kopieren einer Reihe von Datenrahmen zu einem anderen

df1[Age]: 10, 20 30 

df2[Income]: 100, 1000, 1500 

Wie kann ich einen neuen Datenrahmen df3 schaffen, die solche Zeilen aus df1 besteht, dass

df2.loc[k]['income'] >1000? 

In dem oben angegebenen Beispiel, würde ich Ähnlich

df3[Age]: 20, 30 

haben, df4[Age, Income]: (20, 1000), (30, 1500)

Vielen Dank.

Antwort

0
In [232]: df3 = df1.join(df2).query("Income >= 1000") 

In [233]: df3 
Out[233]: 
    Age Income 
1 20 1000 
2 30 1500 

UPDATE:

In [269]: idx = df2.index[df2.Income.ge(1000)] 

In [270]: df3 = df1.loc[idx].join(df2.loc[idx]) 

In [271]: df3 
Out[271]: 
    Age Income 
1 20 1000 
2 30 1500 

oder einfach:

In [275]: df2.loc[df2.Income.ge(1000)].join(df1) 
Out[275]: 
    Income Age 
1 1000 20 
2 1500 30 
+0

Danke. Was ist, wenn df2 groß ist und viele irrelevante Daten enthält, würde der Schritt join (df2) eine gewisse Zeit in Anspruch nehmen, und am Ende werden die meisten irrelevanten Daten verworfen. Irgendwelche Gedanken dazu? –

+0

@PythonEdu, überprüfen Sie bitte die aktualisierte Antwort – MaxU

Verwandte Themen