2017-01-14 3 views
1

У меня есть DataFrameКак сравнить один DataFrame с другим однострочным DataFrame и соответствующим образом изменить цвет или изменить ячейки?

data 

, и это означает, что

data.describe()['mean':'mean'] 

(не нашел лучший способ извлечь ряд средств)

Я хотел бы показать data так, чтобы оно было видимые, значения которых больше среднего (и окрашивают его красным цветом прикрепляют какую-либо метку, например «более крупную»), а какие значения меньше, чем средние (и окрашивают ее блюзом или маркируют «меньшим»).

Я понимаю, что окраска может зависеть от выхода technolory, поэтому я использую jupyter ноутбук и

from IPython.display import display 

Окрашивание не требуется. Замена для строк ярлыками в порядке.

ОБНОВЛЕНИЕ

мне нужно, чтобы содержать значения в отдельной таблице 1-строки, а не на Расчетные мухи.

UPDATE 2

Пусть у меня есть 2 наборов данных

df1 = pd.DataFrame(np.random.rand(10,5)) 
df2 = pd.DataFrame(np.random.rand(1,5)) 

и хотел бы, чтобы цвет df1 согласно df2?

ответ

3

UPDATE:

df1 = pd.DataFrame(np.random.rand(10,5)) 
df2 = pd.DataFrame(np.random.rand(1,5)) 
df1.style.apply(lambda x: np.where(x > df2.loc[0, x.name], 'color: green', 'color: blue')) 

enter image description here

OLD Ответ:

Вы можете использовать Pandas Style:

df.style.apply(lambda x: np.where(x >= x.mean(), 'color: red', 'color: blue')) 
+0

Что делать, если значения содержатся в отдельной таблице, не рассчитан на лету? – Dims

+0

@ Дамы, какие значения вы имели в виду? Не могли бы вы сделать простой пример (образец данных)? – MaxU

+0

Спасибо, но что значит 'x'? Строка, столбец, ячейка или что-то еще? Я получаю 'Серии длины должны соответствовать для сравнения'. См. Мое обновление 2, пожалуйста. – Dims

1

Для обновленного вопроса вы можете просто использовать

df1.style.apply(lambda x: np.where(x > df2.values[0], 'color: red', 'color: blue'), axis=1) 

Во-первых, было бы хорошо, чтобы создать некоторые выборочные данные. Здесь мы используем numpy для этого, а затем воспринимаем среднее значение гораздо более чистым образом.

np.random.seed(1234) 
df = pd.DataFrame(np.random.rand(10,5)) 
df.mean() 

Выход

0 0.543436 
1 0.371999 
2 0.473440 
3 0.585303 
4 0.370456 
dtype: float64 

Вы можете использовать np.where наряду с методом style окрашивать текст соответствующего

df.style.apply(lambda x: np.where(x < df.mean(), 'color: blue', 'color: red'), axis=1) 

enter image description here