如何突出显示除 NaN 之外的所有重复行?
How to highlight all duplicate rows except NaN?
我有一个这样的数据框
Date
ID_1
ID_2
Name
2021-2-3
12
23
Sam
2021-2-3
12
56
Sem
2021-2-3
33
56
Tom
2021-2-3
35
45
Jon
2021-2-3
35
23
Sam
2021-2-3
Nan
99
Jim
2021-2-3
35
Nan
Jon
2021-2-3
88
44
Sam
我想用绿色突出显示所有具有相同 ID 的重复行
Date
ID_1
ID_2
Name
Hightlight
2021-2-3
12
23
Sam
True
2021-2-3
12
56
Sem
True
2021-2-3
33
56
Tom
True
2021-2-3
35
45
Jon
True
2021-2-3
35
23
Sam
True
2021-2-3
Nan
99
Jim
2021-2-3
35
Nan
Jon
True
2021-2-3
88
44
Sam
您可以将 df.style
与自定义函数一起使用:
def duplicated(s):
if s.name.startswith('ID'):
return (s.duplicated()&s.notna()).map({True: 'background-color:green', False: None})
else:
return [None]*len(s)
df.style.apply(duplicated, axis=0)
或更好:
def duplicated(s):
return (s.duplicated()&s.notna()).map({True: 'background-color:green', False: None})
df.style.apply(duplicated, subset=df.columns.str.startswith('ID'), axis=0)
编辑:为了好玩,这里有一种方法可以用不同的颜色突出显示初始副本:
def duplicated(s):
return ((s.duplicated().astype(int)
+s.duplicated(keep=False).astype(int)
)*s.notna().astype(int)
).map({2: 'background-color:green;color:white',
1: 'background-color:lightgreen',
0: None})
df.style.apply(duplicated, subset=df.columns.str.startswith('ID'), axis=0)
我有一个这样的数据框
Date | ID_1 | ID_2 | Name |
---|---|---|---|
2021-2-3 | 12 | 23 | Sam |
2021-2-3 | 12 | 56 | Sem |
2021-2-3 | 33 | 56 | Tom |
2021-2-3 | 35 | 45 | Jon |
2021-2-3 | 35 | 23 | Sam |
2021-2-3 | Nan | 99 | Jim |
2021-2-3 | 35 | Nan | Jon |
2021-2-3 | 88 | 44 | Sam |
我想用绿色突出显示所有具有相同 ID 的重复行
Date | ID_1 | ID_2 | Name | Hightlight |
---|---|---|---|---|
2021-2-3 | 12 | 23 | Sam | True |
2021-2-3 | 12 | 56 | Sem | True |
2021-2-3 | 33 | 56 | Tom | True |
2021-2-3 | 35 | 45 | Jon | True |
2021-2-3 | 35 | 23 | Sam | True |
2021-2-3 | Nan | 99 | Jim | |
2021-2-3 | 35 | Nan | Jon | True |
2021-2-3 | 88 | 44 | Sam |
您可以将 df.style
与自定义函数一起使用:
def duplicated(s):
if s.name.startswith('ID'):
return (s.duplicated()&s.notna()).map({True: 'background-color:green', False: None})
else:
return [None]*len(s)
df.style.apply(duplicated, axis=0)
或更好:
def duplicated(s):
return (s.duplicated()&s.notna()).map({True: 'background-color:green', False: None})
df.style.apply(duplicated, subset=df.columns.str.startswith('ID'), axis=0)
编辑:为了好玩,这里有一种方法可以用不同的颜色突出显示初始副本:
def duplicated(s):
return ((s.duplicated().astype(int)
+s.duplicated(keep=False).astype(int)
)*s.notna().astype(int)
).map({2: 'background-color:green;color:white',
1: 'background-color:lightgreen',
0: None})
df.style.apply(duplicated, subset=df.columns.str.startswith('ID'), axis=0)