I have two dataframe df1 and df2.
df1 has 4 columns.
>df1 Neighborhood Street Begin Street End Street 8th Ave 6th St Church St Mlk blvd .....
>df2 Intersection Roadway Mlk blvd Hue St.
I want to add a new column Count in df2 in such a way that for every row in df2 if any string from Intersection or Roadway column exists in overall df1 data frame even once or more, the count column will have a value of 1. For example for this sample dataframe df2 as Mlk blvd is found  in df1 under End Street  column : the df2 will look like :
>df2 Intersection Roadway Count Mlk blvd Hue St. 1
I also wanted to strip the string and make it case neutral to match it. However, I am not sure how would I set this matching logic using .iloc . How could I solve this?
Advertisement
Answer
Flatten the values in df1 and map to lower case, then convert the values in df2 to lower case and use isin + any to test for the match
vals = map(str.lower, df1.values.ravel()) df2['count'] = df2.applymap(str.lower).isin(vals).any(1).astype(int)
Intersection Roadway count 0 Mlk blvd Hue St. 1