if statement - Python Pandas Dataframe Conditional If, Elif, Else -
in python pandas dataframe, i'm trying apply specific label row if 'search terms' column contains possible strings joined, pipe-delimited list. how can conditional if, elif, else statements pandas?
for example:
df = pd.dataframe({'search term': pd.series(['awesomebrand inc', 'guy boots', 'ectoplasm'])}) brand_terms = ['awesomebrand', 'awesome brand'] footwear_terms = ['shoes', 'boots', 'sandals'] #note: not work if df['search term'].str.contains('|'.join(brand_terms)): df['label'] = 'brand' elif df['search term'].str.contains('|'.join(footwear_terms)): df['label'] = 'footwear' else: df['label'] = '--' example desired output:
search term label awesomebrand inc brand guy boots footwear ectoplasm -- i've tried appending .any() ends of contains() statements applies brand label every row.
most of examples come across comparing if column value == equal (not want) or performing numeric comparisons, not text string comparisons.
here's 1 way it, using str.contains() , np.where()
in [26]: np.where(df['search term'].str.contains('|'.join(brand_terms)), 'brand', np.where(df['search term'].str.contains('|'.join(footwear_terms)), 'footwear', '--')) out[26]: array(['brand', 'footwear', '--'], dtype='|s8') which can assign df['label'] like
in [27]: df['label'] = np.where(df['search term'].str.contains('|'.join(brand_terms)), ....: 'brand', ....: np.where(df['search term'].str.contains('|'.join(footwear_terms)), ....: 'footwear', ....: '--')) in [28]: df out[28]: search term label 0 awesomebrand inc brand 1 guy boots footwear 2 ectoplasm --
Comments
Post a Comment