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






Если вы хотите выделить две строки (скажем, индекс 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)
@ilatikkral Если мой ответ решил вашу проблему, я буду рад принять его. Если у вас есть другой вопрос, сделайте mcve и откройте другой вопрос. Так людям с одной и той же проблемой будет легче найти решение.
@ilatikkral, если вы хотите добавить больше цветов, вы можете использовать оператор if, elif, else в своем списке понимания.
Здесь есть ссылка на множество вопросов, касающихся стилизации строки 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, возиться с приведенным выше ответом с использованием «светло-зеленого» может дать вам черный на черном ... вероятно, не то, что кто-то находясь в поиске.
Спасибо, это сработало. но как сохранить окраску, если я хочу добавить еще один цвет в фрейм данных?