我正在创建以下 Dataframe 并尝试从我的最后一行更改我的“代码”单元格的背景,因为它的长度与 8 不同,但我不明白我错在哪里...
def add_warn_color():
return 'background-color: yellow'
def validate_data(row):
if len(row['code']) != 8:
row['code'].style.applymap(add_warn_color)
data = {0: ['title1','ABC123ZX'], 1: ['title2', '9876QWERTYUI']}
df = pd.DataFrame().from_dict(data,orient='index',columns=['title','code'])
row = df.iloc[-1:,:]
validate_data(row)
我很确定我误解了一些东西,但我不明白......
答案 0 :(得分:2)
只有 DataFrame(不是 Series)具有 .style 属性。我们需要使用 columnwise 样式并将样式应用于相关单元格。请注意,该样式仅应用于返回的样式器。
def warning_colors(s):
# Mask: Is it the last row. Is the length != 8?
warn = (s.reset_index().index == len(s) - 1) & (s.str.len() != 8)
return ['background-color: yellow' if v else '' for v in warn]
data = {0: ['title1','ABC123ZX'], 1: ['title2', '9876QWERTYUI']}
df = pd.DataFrame.from_dict(data, orient='index', columns=['title','code'])
# Style only the 'code' column
dfs = df.style.apply(warning_colors, subset='code')
dfs
title | 代码 | |
---|---|---|
0 | title1 | ABC123ZX |
1 | title2 | /* 黄色 */ 9876QWERTYUI |