【问题标题】:How to highlight dataframe based on another dataframe value so that the highlighted dataframe can be exported to excel如何根据另一个数据框值突出显示数据框,以便可以将突出显示的数据框导出到excel
【发布时间】:2019-08-29 16:44:27
【问题描述】:

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

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

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 作为最终答案。在最终答案中,尼克被突出显示(我想用背景颜色突出显示)。

我已经尝试过使用 pandas Styler.applymap 和 Styler.apply 但没有成功,因为涉及两个数据框。也许我无法直截了当地思考这个问题。

df1:

df2:

【问题讨论】:

    标签: python pandas dataframe


    【解决方案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)
    

    【讨论】:

    • 不错的解决方案 ;)
    • 感谢它的魅力,我也应该以同样的方式思考,你的方式更加优雅和干净!
    • @vaneeshdass 很高兴我能帮忙..!!快乐编码:)
    猜你喜欢
    • 2021-08-04
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2020-05-18
    • 2015-08-04
    相关资源
    最近更新 更多