I have a pandas dataframe which looks like this:
col1 col2 0 1 A 1 10 A, B 2 20 B 3 5 C 4 70 A, B, C
Now I want to search col2 on a given condition and select rows accordingly. For example:
search_pattern = ["A"] -> Select all rows where A is present [rows 0, 1, 4] search_pattern = ["A", "B"] -> Select all rows where A is present and B is present [rows 1, 4] search_pattern = ["B"] -> Select all rows where B is present [rows 1, 2, 4]
Advertisement
Answer
You can split values and compare with sets by issubset
in Series.map
:
search_pattern1 = ["A"] search_pattern2 = ["A", "B"] search_pattern3 = ["B"] pats = [search_pattern1, search_pattern2, search_pattern3] for pat in pats: df1 = df[df['col2'].str.split(', ').map(set(pat).issubset)] print (df1)
col1 col2 0 1 A 1 10 A, B 4 70 A, B, C col1 col2 1 10 A, B 4 70 A, B, C col1 col2 1 10 A, B 2 20 B 4 70 A, B, C