Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pandas对重复值进行条件格式设置_Python_Pandas_Dataframe_Duplicates_Conditional Formatting - Fatal编程技术网

Python 使用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

我有一个包含两列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 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'])