Python 使用pandas对重复值进行条件格式设置
我有一个包含两列a和B的数据帧。我必须使用pandas来分离数据帧的子集,以删除所有重复的值Python 使用pandas对重复值进行条件格式设置,python,pandas,dataframe,duplicates,conditional-formatting,Python,Pandas,Dataframe,Duplicates,Conditional Formatting,我有一个包含两列a和B的数据帧。我必须使用pandas来分离数据帧的子集,以删除所有重复的值 For Example 我的数据框看起来像这样 **A B** 1 1 2 3 4 4 8 8 5 6 4 7 那么输出应该是 **A B** 1 1 <--- both values Highlighted 2 3 4 4 <--- both values Highligh
For Example
我的数据框看起来像这样
**A B**
1 1
2 3
4 4
8 8
5 6
4 7
那么输出应该是
**A B**
1 1 <--- both values Highlighted
2 3
4 4 <--- both values Highlighted
8 8 <--- both values Highlighted
5 6
4 7 <--- value in column A highlighted
**A B**
1你可以使用这个:
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'])
示例工作代码:
说明:
首先,我们对数据框进行修改,以便将所有列放入一个系列中,并使用keep=False
查找以将所有重复项标记为true:
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
在此之后,我们使用dataframe,它给出了具有相同dataframe结构的布尔dataframe:
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
一旦我们有了它,我们将背景色指定给值,如果为真,否则使用欢迎使用堆栈溢出!你试过什么吗?你有代码给我们看吗?你能告诉我x是什么吗?@anky_91但是x在这个例子中代表什么case@TwinkleLahariya它是要应用此样式的任何数据帧。基本上它是一个函数,因此我将其命名为x,您可以将相同的函数应用于df
,df1
。。等你想要应用这个函数的任何一个数据帧,所以行x.stack().duplicated(keep=False).unstack()
将返回与df.stack().duplicated(keep=False).unstack()
相同的结果,因为它应用于df
@anky_91,如果我的xlsx文件中有多个列,并且我必须只对两列应用它呢(假设E&F列)的文件?@TwinkleLahariya然后保持函数不变,只需应用于类似df.style.apply的子集(颜色重复,轴=无,子集=['E','F'])