在pandas中,当尝试使用style.applymap()为 Dataframe 的列的几个值着色时,会得到错误'int'对象没有属性'index'

jjhzyzn0  于 2023-04-10  发布在  其他
关注(0)|答案(1)|浏览(225)

当尝试从行索引列表中为特定列的几个单元格值着色时,在pandas中使用style.applymap(),我得到错误'int'对象没有属性'index'。我不知道为什么dataframe会这样?

def highlight_col(x, lst):
    r = 'color: red'
    df = pd.DataFrame('', index=x.index, columns=x.columns)
    for i in lst:
        df.iloc[i:1, 0] = r
    return df

df1 = pd.DataFrame({'id':[10,11,12,13,14], 'name':['Rahul', 'Ravi', 'Mike', 'Nair', 'Mona'], 'age':[30,40,23,45,12], 'street_no':['E112', 'B115', 'C119', 'H112', 'J091']})

lst = (1, 3, 5) # list of row numbers

style1 = df1.style.applymap(lambda x: highlight_col(x, lst))

style1

Error: AttributeError: 'int' object has no attribute 'index'
fjnneemd

fjnneemd1#

IIUC,要有条件地将列id着色为红色,您可以尝试使用apply的 * 基本方法 *:

def highlight_col(ser, col, lst):
    return ["color: red"
            if i == df1.columns.get_loc(col) and ser.name+1 in lst
            else "" for i in range(len(df1)-1)]

style1 = df1.style.apply(highlight_col, col="id", lst=[1, 3, 5], axis=1)

输出:

相关问题