I could not easily find solutions for this problem hence this post.
Here are two ways of checking that
df.apply(pd.Series.nunique, axis=0).unique().tolist() == [1]
and
df.groupby(df.columns.tolist()).ngroups == 1
the groupby method was *slightly* faster in my timing tests using the following code
import pandas as pd
import timeit
data = [
dict(zip(list('abc'), range(1, 4))),
dict(zip(list('abc'), range(1, 4))),
]
df = pd.DataFrame(data)
print(df.apply(pd.Series.nunique, axis=0).unique().tolist() == [1])
print(df.groupby(df.columns.tolist()).ngroups == 1)
print(timeit.timeit('df.apply(pd.Series.nunique, axis=0).unique().tolist() == [1]',
number=1000, globals=globals()))
print(timeit.timeit('df.groupby(df.columns.tolist()).ngroups == 1', number=1000,
globals=globals()))