Use GroupBy.transform with DataFrameGroupBy.nunique for get rows not number of unique values per groups equal 1:
df1 = df[df.groupby('col1')['col2'].transform('nunique').ne(1)] print (df1) idx col1 col2 0 1 X A 3 4 X A 5 6 X B Or for get values of column col1 use DataFrameGroupBy.nunique with filter indices of Series:
s = df.groupby('col1')['col2'].nunique() vals = s.index[s.ne(1)].tolist() print (vals) ['X']