熊猫造型单细胞

时间:2021-06-17 14:53:01

标签: python python-3.x pandas dataframe

我正在创建以下 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)

我很确定我误解了一些东西,但我不明白......

1 个答案:

答案 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