У меня есть этот фрейм данных 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
Эта функция занимает очень много времени. Мне интересно, есть ли более быстрый способ сделать это?