как я могу стилизовать конкретные ячейки pandas df на основе разных df?

#python #pandas

#python #pandas

Вопрос:

Учитывая следующие два игрушечных фрейма данных,

 import pandas as pd
df1 = pd.DataFrame({'A':[0,123,321], 'B':[0,1543,432], 'C': [10,20,30]})
df2 = pd.DataFrame({'A':[0,10,20], 'B':[50,43,42], 'C': [15,25,45]})
 

как я могу установить заданный стиль для определенных ячеек df1 в записной книжке jupyter на основе df2 (того же размера), используя subset параметр?

Например, установите эти значения CSS только в том случае, если соответствующее df2 значение ячейки превышает 40.

 df1.style.set_properties(**{'color': 'red', 'font-size': '10px'})
                                #,subset= ???)
 

в настоящее время возвращается:

введите описание изображения здесь

EDIT1: обращаясь к комментарию, желаемым результатом должна быть приведенная выше таблица, но единственными ячейками с красным шрифтом и размером шрифта 10 пикселей должны быть B0, B1, B2 и C2

Ответ №1:

Попробуйте style.apply использовать ссылочный фрейм данных и axis=None .

 def highlight(df, ref_df=None, thresh=None):
    return pd.DataFrame(np.where(ref_df>thresh, 'color:red; font-size:13pt', ''),
                        index=df.index, columns=df.columns)

df1.style.apply(highlight, ref_df=df2, thresh=40, axis=None)
 

Вывод:

введите описание изображения здесь