Mina
Mina

Reputation: 748

Pandas select based on conditions on multiple columns and a set of values

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

Answers (2)

Tarik
Tarik

Reputation: 11209

Change you list of pairs to a DataFrame. Next, do a join between the two DataFrames.

Upvotes: 1

BENY
BENY

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

Related Questions