Reputation: 748
I have a list of locations and a dataframe like below and I want to select rows from a df with city and country columns where the location of the row (city and country) matches any of the pairs in the dataframe. The list of locations can have a bigger number of pairs which makes typing all conditions less desirable solution.
Locations = [(London,Uk), (Paris, US), (Toronto, Canada)]
| City | Country | value |
| -------- | -------- | ----- |
| London | Canada | 10 |
| London | UK | 200 |
| Paris | France | 300 |
| Toronto | Canada | 40 |
| Paris | US | 100 |
Upvotes: 1
Views: 201
Reputation: 11209
Change you list of pairs to a DataFrame. Next, do a join between the two DataFrames.
Upvotes: 1
Reputation: 323226
Here is one way reindex
after set_index
Locations = [('London','Uk'), ('Paris', 'US'), ('Toronto', 'Canada')]
out = df.set_index(['City','Country']).reindex(Locations).reset_index()
out
Out[83]:
City Country value
0 London Uk NaN
1 Paris US 100
2 Toronto Canada 40
Upvotes: 2