Выделите (раскрасьте) строку фрейма данных панды по индексу

у меня есть два фрейма данных df1:

d1 = {"col1" : ['A', 'B', 'C'],
      "Col2": ["home", "car","banana" ]}

d2 = {"col1" : ['D', 'F','C'],
      "Col2": ["garden", "boat","banana" ]}

df1 = pd.DataFrame(data=d1)
df2 = pd.DataFrame(data=d2)

new_df = pd.merge(df1, df2,  on ='col1', how='outer')
new_df

Итак, я пытаюсь выделить третью строку «банан», которая была обнаружена в двух фреймах данных. Я использовал Документация по стилю, чтобы найти решение, но безуспешно. Мне удалось выделить только одну строку, но когда у меня несколько строк, это не работает. Пожалуйста, протяни руку помощи

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
7
0
8 563
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы хотите выделить две строки (скажем, индекс 2 и 4), это почти дубликат этого отвечать

new_df.style.apply(lambda x: ['background: lightgreen' if x.name in [2,4] 
                              else '' for i in x], 
                   axis=1)

Если вместо этого вы хотите выделить каждую строку, содержащую заданное имя в списке (например, lst = ['car', 'boat']), вы можете использовать

new_df.style.apply(lambda x: ['background: lightgreen' if (set(lst).intersection(x.values)) 
                              else '' for i in x], 
                   axis=1)

Спасибо, это сработало. но как сохранить окраску, если я хочу добавить еще один цвет в фрейм данных?

ila tikkral 30.04.2018 15:35

@ilatikkral Если мой ответ решил вашу проблему, я буду рад принять его. Если у вас есть другой вопрос, сделайте mcve и откройте другой вопрос. Так людям с одной и той же проблемой будет легче найти решение.

rpanai 30.04.2018 15:41

@ilatikkral, если вы хотите добавить больше цветов, вы можете использовать оператор if, elif, else в своем списке понимания.

rpanai 30.04.2018 15:42

Здесь есть ссылка на множество вопросов, касающихся стилизации строки DataFrame, поэтому я продолжал приходить сюда, несмотря на то, что принятый ответ не работал для меня и не было полезного сообщения об ошибке от pandas. Я просто хотел указать, что хотя принятый ответ может нормально работать для html, Jupyter или чего-то еще, что они используют. Не работает при применении к Excel. Для Excel вам понадобится следующее:

new_df.style.apply(
    lambda x: ['background-color: <color>' if x.name in [2,4] else '' for i in x],
    axis=1
)

Обратите внимание на использование "фоновый цвет". Excel не будет отображать "фон", как вы могли ожидать.

Кроме того, при работе с Excel вам нужно будет использовать название цвета из списка распознанных цветов Excel, возиться с приведенным выше ответом с использованием «светло-зеленого» может дать вам черный на черном ... вероятно, не то, что кто-то находясь в поиске.

Другие вопросы по теме