Подсветка строк с использованием индексных чисел в pandas кадре данных - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь выделить полную строку на основе значений индекса. Вот что я сделал:

df = pd.read_excel(module)
rows = df.index[df['MYCOLUMN'].str.contains(command, na=False)].tolist()

if rows: 
        df.style.apply(lambda x: ['background: red' if x.name in rows else '' for i in x], axis=1)
        df.to_excel(module, index = False) 

Но строка не выделяется, и форматирование моего Excel также изменяется. Может кто-нибудь сказать правильный способ сделать это?

1 Ответ

1 голос
/ 10 февраля 2020

Вы можете создать DataFrame стилей с помощью Styler.apply и установить строки по маскам с помощью loc:

def color(x): 
   c1 = 'background-color: red'
   c = ''
   m1 = df['MYCOLUMN'].str.contains(command, na=False)

   df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
   df1.loc[m1, :] = c1
   return df1

(df.style.apply(color,axis=None)
         .to_excel('styled.xlsx', engine='openpyxl', index=False))

Для меня рабочие переменные вне функции, например:

def color(x): 
   c = ''
   m1 = df['MYCOLUMN'].str.contains(command, na=False)

   df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
   df1.loc[m1, :] = c1
   return df1

command = 'test'
c1 = 'background-color: red'

(df.style.apply(color, axis=None)
         .to_excel('styled.xlsx', engine='openpyxl', index=False))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...