【发布时间】: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。
这里是df1 和df2 我想要this 作为最终答案。在最终答案中,尼克被突出显示(我想用背景颜色突出显示)。
我已经尝试过使用 pandas Styler.applymap 和 Styler.apply 但没有成功,因为涉及两个数据框。也许我无法直截了当地思考这个问题。
df1:
df2:
【问题讨论】: