pd.Series.isin works by hashing and works on the entire element, i.e. it won't consider a partial match. Even for an exact match, since a list cannot be hashed, pd.Series.isin won't work with a series of lists.
Partial match
You can use a custom function with pd.Series.apply:
df = pd.DataFrame({'A': [[1, 2], [0], [0, 2, 3]]}) search_list = [0] # list of scalars mask = df['A'].apply(lambda x: any(i in x for i in search_list)) res = df[mask] print(res) A 1 [0] 2 [0, 2, 3]
Exact match
You can convert your series to tuples, which are hashable, before any comparison. Then compare your series of tuples with a list of tuples.
search_list = [[0]] # list of lists mask = df['A'].map(tuple).isin(list(map(tuple, search_list))) res = df[mask] print(res) A 1 [0]
Note operations with object dtype series will necessarily be inefficient. If possible, you should split your series of lists into multiple series of integers. Although, in this case, this may be cumbersome given the inconsistent list lengths.