i tried looking at other responses and what i found didn't work.
i have a dataframe where a "description" column contains a long string. using bamboolib i get a proper result inputing the feature values manually.
filter_df = df.loc[(((df['description'].str.contains('estudio', case=False, regex=True, na=False)) | (df['description'].str.contains('family', case=False, regex=True, na=False))) | (df['description'].str.contains('family room', case=False, regex=True, na=False))) | (df['description'].str.contains('estar familiar', case=False, regex=True, na=False))]
how could a loop or other method replicate the same or similar filter using a list of the features.
ie:
feature_list = [ 'Estudio' , 'Family room' , 'Estar familiar' , 'Walking Closet' , 'Walk-in Closet' ,'Walk in closet' , 'Walkin closet' , 'Walkin clóset' , 'Walk in Clóset', 'Walk-in Clóset', 'Walking Clóset']
i would go with filtering with .loc[] and then prolly appending but that seems cumbersome and hopefully someone more experienced could share a streamlined way.
and even my attempts to filter using the following options returned empty dataframes, where they should not be empty in all cases
def filter_features(df,feature_list):
for idx, feature in enumerate(feature_list):
print(feature)
print(feature_list[idx])
filter_df = df.loc[(df['description'].str.contains(feature, case=False, regex=True, na=False)) ]
print(filter_df)
def filter_features(df,feature_list):
for idx, feature in enumerate(feature_list):
print(feature)
print(feature_list[idx])
filter_df = df.loc[(df['description'].str.contains(feature_list[idx], case=False, regex=True, na=False)) ]
print(filter_df)
def filter_features(df,feature_list):
for idx, feature in enumerate(feature_list):
print(feature)
print(feature_list[idx])
filter_df = df.loc[(df['description'].str.contains(str(feature), case=False, regex=True, na=False)) ]
print(filter_df)
====
this was one of the previous responses that i found that did not work for me
def filter_features(df,feature_list):
# Solution:
conditions = False
for f in feature_list:
print(f)
conditions = conditions | (df["description"].str.contains(f))
print(conditions)
df.loc[conditions]
print(df)