Вы можете использовать это:
def color_dupes(x):
c1='background-color:red'
c2=''
cond=x.stack().duplicated(keep=False).unstack()
df1 = pd.DataFrame(np.where(cond,c1,c2),columns=x.columns,index=x.index)
return df1
df.style.apply(color_dupes,axis=None)
# if df has many columns: df.style.apply(color_dupes,axis=None,subset=['A','B'])
Пример рабочего кода:
Объяснение: Сначала мы stack
кадр данных, чтобы объединить все столбцы в серии и найти duplicated
с keep=False
, чтобы отметить все дубликаты как истинные:
df.stack().duplicated(keep=False)
0 A True
B True
1 A False
B False
2 A True
B True
3 A True
B True
4 A False
B False
5 A True
B False
dtype: bool
После этого мы unstack()
кадра данных, который дает логический кадр данных с той же структурой данных:
df.stack().duplicated(keep=False).unstack()
A B
0 True True
1 False False
2 True True
3 True True
4 False False
5 True False
Как только мы получим это, мы назначим цвет фона значениям, если True, иначе нет цвет, используя np.where