如何基于另一个数据框值突出显示数据框,以便可以将突出显示的数据框导出到excel

时间:2019-08-29 07:43:07

标签: python pandas dataframe

我有两个形状相同的数据框,需要将数据框的每个单元相互比较。如果它们不匹配或一个值为null,则必须编写较大的数据框以突出显示不匹配或null值为true的单元格。

我将这两个数据框差异计算为另一个具有布尔值的数据框。

data1 = [['tom', 10], ['nick', 15], ['juli', 14]] 
data2=[['tom', 10], ['sam', 15], ['juli', 14]] 

# Create the pandas DataFrame 
df1 = pd.DataFrame(data, columns = ['Name', 'Age']) 
df2 = pd.DataFrame(data2, columns = ['Name', 'Age']) 
df1.replace(r'^\s*$', np.nan, regex=True, inplace=True)
df2= pd.read_excel(excel_file, sheet_name='res', header=None)
df2.replace(r'^\s*$', np.nan, regex=True, inplace=True)
df2.fillna(0, inplace=True)
df1.fillna(0, inplace=True)

difference = df1== df2 #this have boolean values True if value match false if mismatch or null

现在我想写df1并根据差异突出显示单元格。例如,如果差分cell1的值为false,则我希望将df1 cell1设置为黄色,然后将整个df1的高亮显示为excel。

这里是df1df2,我希望this作为最终答案。在最终答案中,尼克被突出显示(我想用背景色突出显示)。

我已经尝试使用熊猫Styler.applymap和Styler.apply,但由于涉及两个数据框而没有成功。也许我不能直接考虑这个问题。

df1:

enter image description here

df2:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

def myfunc(x):
    c1=''
    c2='background-color: red'
    condition=x.eq(df2)
    res=pd.DataFrame(np.where(condition,c1,c2),index=x.index,columns=x.columns)
    return res
df1.style.apply(myfunc,axis=None)

enter image description here