Фильтрация фрейма данных панд с несколькими условиями несколько раз - PullRequest
0 голосов
/ 08 мая 2018

У меня есть этот фрейм данных top100 (100 уникальных городов и штатов)

city            state   
Las Vegas       Nevada  
Fremont         California  
Boise City      Idaho   
Richmond        Virginia    
San Bernardino  California
....

и база данных фреймов (1 000 000 строк)

city            state          data
Las Vegas       Nevada         Las.Vegas.Nevada.2
Las Vegas       Nevada         Las.Vegas.Nevada.4
.....    
Boston          Massachusetts  Boston.Massachusetts.47
Boston          Massachusetts  Boston.Massachusetts.48
.....
Richmond        Virginia       Richmond.Virginia.34
....

Как мне отфильтровать df с помощью top100? Результат будет в том же формате, что и база данных, но только с топ-100 городами в топ-100 данных. Вот что у меня сейчас

def filter_city():
   # Initialize an empty dataframe to store result
   d = {'state': [], 'city':[], 'data':[]}
   df = pd.DataFrame(d)

   # Loop through each city in top 100
   for i in range(len(top100['city'])):
        tempCity = database[database['city'].str.contains(top100['city'][i]) & 
                             database['state'].str.contains(top100['state'][i])].copy()
        df = df.append(tempCity)
   return df

Эта функция занимает очень много времени. Мне интересно, есть ли более быстрый способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...