By using value_counts
+ map
df.assign(BOOL=df.data.map(df.data.value_counts()>1))
Out[437]:
data BOOL
0 1 True
1 3 False
2 7 False
3 1 True
By using drop_duplicate
df.assign(BOOL=df.index.isin(df.drop_duplicates('data',keep =False).index))
Out[440]:
data BOOL
0 1 False
1 3 True
2 7 True
3 1 False