Pandas 多次过滤具有多个条件的数据帧
我有这个数据框top100(100个独特的城市和州) 和数据帧数据库(1000000行) 如何使用top100过滤df?结果将与数据库的格式相同,但仅限于top100数据框中的前100个城市。 这是我目前拥有的Pandas 多次过滤具有多个条件的数据帧,pandas,dataframe,filter,Pandas,Dataframe,Filter,我有这个数据框top100(100个独特的城市和州) 和数据帧数据库(1000000行) 如何使用top100过滤df?结果将与数据库的格式相同,但仅限于top100数据框中的前100个城市。 这是我目前拥有的 def filter_city(): # Initialize an empty dataframe to store result d = {'state': [], 'city':[], 'data':[]} df = pd.DataFrame(d) # L
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
这个函数需要很长时间。我想知道有没有更快的方法 你是否做了
database.merge(top100,on=['city','state'])
?嗨,COLDSPEED,我刚刚尝试了上面的方法。结果是7540行,而使用my函数,结果是9073行(它们是唯一的)。我不知道为什么。编辑:我的函数使用contains,因此结果同时包括“Las Vegas”和“North Las Vegas”。您的函数可能是正确的。非常感谢。
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
....
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