我想突出显示pandas dataframe列中未通过此有效性检查的所有单元格颜色为“red”。这是我的密码。在我的实现中,整个列email被突出显示为红色,而不是单个单元格。在
# raw data
df = pd.DataFrame({'Username' : ['arenzo', 'brenzo', 'crenzo', 'drenzo'],
'Email' : ['place1@sales.org', 'place2@sales.org', 'place3@sales.com', 'place4@stack.net']})
# email validity function
def emailcheck (df):
validcode = (df['Email'].str.contains('@')) & (df['Email'].str.contains('.org', case= False) & (df['Email'].str.contains('sales', case=False)))
return validcode
def highlight_email(s):
if emailcheck(df).all():
color = ''
else:
color = 'red'
return 'background-color: %s' % color
df.style.applymap(highlight_email, subset=pd.IndexSlice[:, ['Email']])
# dataframe
Username Email
arenzo place1@sales.org
brenzo place2@sales.org
crenzo place3@sales.com
drenzo place4@stack.net
# last 2 rows under email column should be highlighted red
您当前正在根据您的条件检查整个数据帧
然后在if语句中测试以上所有值是否为真
^{pr2}$这将始终从数据中返回false,因为数据中的某些值符合您的条件,而其他值则不符合条件。由于if语句的求值为false,因此函数将为每个单元格返回红色。相反,只需保留第二个函数并根据单个值进行测试。在
相关问题 更多 >
编程相关推荐