df = pandas.DataFrame(numpy.array([['a', 1], ['b', 2], ['b', 3], ['c', 3]]))
df
collections.Counter(df[0])
violations1 = [k for k, v in list(collections.Counter(df[0]).items()) if v > 1]
violations2 = [k for k, v in list(collections.Counter(df[1]).items()) if v > 1]
violations1
violations2
Finding rows in a Pandas DataFrame with columns that violate a one-to-one mapping