Как сделать сравнение зависимым от условий столбцов данных? - PullRequest
1 голос
/ 17 октября 2019

Я хочу выделить ячейку за ячейкой с некоторыми условиями, подобными этим: This is output that I want

df = pd.DataFrame(...)

def highlight(row):

    if row[0] > row[1]:
        color = 'red'

    elif row[0] < row[1]:
        color = 'green'

    else:
        color = 'yellow'

    background = ['background-color: {}'.format(color) for row in df['col1']]
    return background


df2 = df.style.apply(highlight, axis = 1)
df2.to_excel('style.xlsx')

Кстати, я хочу сделать это сравнение между col1 и col2.

Я жду вашей помощи.

1 Ответ

0 голосов
/ 17 октября 2019

Вместо возврата фона для столбца, верните строки:

np.random.seed(1)
df = pd.DataFrame(np.random.randint(0,3, (10,4)),
                  columns=('hour','col1','col2','col3'))

def highlight(row):
    if row['col1'] > row['col2']:
        color='red'
    elif row['col1'] < row['col2']:
        color='green'
    else: color = 'yellow'

    # notice the difference
    # also color:black is not needed, just add because my jupyter style
    background=['',f'background-color:{color}; color:black','','']
    return background

df.style.apply(highlight,axis=1)

Вывод:

enter image description here

...