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

Я работаю с Python, и у меня есть серьезная (я действительно не могу понять, как я могу ее решить) проблема с выделением некоторых ячеек в моем фрейме данных. Я показываю вам свои сомнения: у меня 2 матрицы и форма у них одинаковая. Одна из этой матрицы состоит только из 0/1, а другая имеет десятичные числа. Я бы выделил элемент в матрице, созданный десятичными числами, но с условием для матрицы, составленной 0/1. Так, например: если в матрице, сделанной 0/1, у меня есть ячейка с 1 ТО, я бы выделил эту же ячейку в другой матрице (например: в моей матрице вы можете видеть, что в первой ячейке у меня есть 1, поэтому я бывыделите первую ячейку другой матрицы (0,000034)). Я действительно не знаю, как я могу написать это.

Я также думал разделить мой фрейм данных в единственном столбце и работать с ним один за другим, а затем собрать все столбцы вместе, может быть, может быть проще? но ... я не нашел, как я могу выделить какой-то элемент в Серии, потому что ноутбук говорит мне, что у Серии нет атрибута "apply" (когда я пишу "Series.style.applyect). Возможно ли это?

Спасибо за вашу помощь!

Результат = pd.DataFrame ({'First': [1,1,1,1,1, ...], 'Second': [1,1,1,0,1, ...], «третий»: [0,0,0,0,0, ...], «четвертый»: [1,1,1,1,0, .. .]})

Значения = pd.DataFrame ({'One': [0,000034, 0,000043, 0,000023, 0,000055, 0,000034, ...], 'Two': [0,000011, 0,000087, 0,000045, 0,000065,0,000024, ...], «Три»: [0,000054, 0,000026, 0,000043, 0,000022, 0,000024 ...], «Четыре»: [0,000011, 0,000025, 0,000053, 0,000036, 0,000026, ...]})

1 Ответ

0 голосов
/ 04 ноября 2019
import pandas as pd
df = pd.DataFrame([[2,3,1], [3,2,2], [2,4,4]], columns=list("ABC"))
df_mask = pd.DataFrame([[1,0,1], [0,0,0], [0,1,1]], columns=list("ABC"))


def highlight_mask(df, df_mask, color='yellow'):
    '''
    highlight the cells with df_mask.
    '''
    df_mask.replace(1, 'background-color: {}'.format(color), inplace=True)
    df_mask.replace(0, '', inplace=True)
    return df_mask


df.style.apply(highlight_mask, df_mask=df_mask, color='red', axis = None)
...