我有两个包含日期的数据框:
DF1:
Name A B C
D1 2018-04-26 2018-04-24 2018-04-24
D2 2018-04-25 2018-04-23 2018-04-23
D3 2018-04-25 2018-04-26 2018-04-26
DF2:
Name A B C
D1 2018-04-24 2018-04-23 2018-04-24
D2 2018-04-25 2018-04-23 2018-04-21
D3 2018-04-22 2018-04-24 2018-04-23
让我说我想设置df1样式,如果一个值不等于df2中的相应值,它会突出显示红色的单元格。
我知道我需要创建一个函数并使用
df1.style.applymap()
但我在将功能放在一起时遇到了麻烦。就像是;
def diffindicator(val):
color = 'white'
if val != df2:
color = 'red'
return 'background-color: %s' % color
答案 0 :(得分:1)
这是突出差异的一种方法:
# Load Example Data
df1 = pd.read_fwf(StringIO(
'''Name A B C
D1 2018-04-26 2018-04-24 2018-04-24
D2 2018-04-25 2018-04-23 2018-04-23
D3 2018-04-25 2018-04-26 2018-04-26'''))
df2 = pd.read_fwf(StringIO(
'''Name A B C
D1 2018-04-24 2018-04-23 2018-04-24
D2 2018-04-25 2018-04-23 2018-04-21
D3 2018-04-22 2018-04-24 2018-04-23'''))
def highlight_diff(data, other, color='pink'):
# Define html attribute
attr = 'background-color: {}'.format(color)
# Where data != other set attribute
return pd.DataFrame(np.where(data.ne(other), attr, ''),
index=data.index, columns=data.columns)
# Set axis=None so it passes the entire frame
df2.style.apply(highlight_diff, axis=None, other=df1)
输出:
另外,请查看this question,详细了解DataFrames之间的区别......事实上,我的答案可能会或可能不会受到this answer的启发。