Pandas добавить цвет фона ячейки с помощью списка и сохранить в Excel - PullRequest
1 голос
/ 06 апреля 2020

У меня есть датафрейм, как показано ниже. enter image description here

Я хочу изменить цвет фона по условию и, наконец, хочу сохранить в Excel. Ниже приведены некоторые случаи:

  • условие 1: точное совпадение и чувствительность к регистру = False -> красный
  • условие 2: содержать & с учетом регистра = False -> желтый
  • условие 3: повторить тот же символ еще 3 -> синий

  • list_for_condition1 = [us, ca]

  • list_for_condition1 = [apple, sam]
  • list_for_condition3 = [xxx, xxxx, xxxxxxxxxxx, bbb, aaa]

Это ожидаемый результат. enter image description here

Я нашел код ниже, используя stype.applymap, но не смог применить этот случай.

styled = (df.style.applymap(lambda v: 'background-color: %s' % 'green' if v=='col' else ''))
styled.to_excel('d:/temp/styled.xlsx', engine='openpyxl')

Как я могу решить эту проблему?

1 Ответ

2 голосов
/ 06 апреля 2020

Я бы определил отдельную функцию, отражающую ваши условия, и applymap:

def colorize(x):
    try:
        lower = x.lower()
        # condition 1, pass the corresponding list
        if lower in ['us','ca']: return 'background-color: red'

        # condition 2
        for s in ['apple', 'sam']: 
            if s in lower: return 'background-color: yellow'

        # condition 3
        for s in ['xxx','bbb', 'aaa']:
            if s in lower: return 'background-color:  blue'

        return ''
   except:
        return ''

# toy data
df = pd.DataFrame({'Country':['USA','us','usa','ca', 'CA'],
                   'V1':["Apple", "Applex", 'APPLE', 'SAMSUNG','xxx'],
                   'V2':['Samsung', 'Semsung', 'SamSung1', 'apple', 'bbbb'],
                   'V3':['SAMSUNG', 'SS','APPLEXX', 'APPLEs', 'aaa']
                   })

df.style.applymap(colorize)

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...