Стиль DataFrame в Pandas со смешанным типом приводит к TypeError - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующий DataFrame со смешанными типами, и я хотел бы закрасить ячейки только в первых 4 строках:

>>> import pandas as pd
>>> import numpy as np
>>> np.random.seed(0)
>>> df = pd.DataFrame(index=[1,2,3,4],
                      columns = ['A','B'],             
                      data=np.random.uniform(low=0.,
                      high=1.,size=8).reshape(4,2)
                      )
>>> df = pd.concat([df,pd.DataFrame(index=[5],
                       columns=['A','B'],
                       data=[['OK', 'OK']])])
>>> df
           A           B
1   0.548814    0.715189
2   0.602763    0.544883
3   0.423655    0.645894
4   0.437587    0.891773
5         OK          OK

Использование subset для применения стиля только к первым 4строки, это возвращает мне ошибку:

>>> df.style.background_gradient(cmap='RdYlGn',
                         low=0.6, 
                         high=0.8, 
                         subset=pd.IndexSlice[1:4,:])
TypeError: ("Cannot cast array data from dtype('O') to dtype('int64') according to the rule 'safe'", 'occurred at index A')

Есть идеи обойти?

Я использую Pandas 0.22.0

спасибо, Грег

1 Ответ

0 голосов
/ 01 июня 2018

Пока не поддерживается style с.

Возможное решение - преобразовать нечисловое значение в NaN с:

df = df.apply(pd.to_numeric, errors='coerce')

И при необходимости выделите его:

df.style.background_gradient(cmap='RdYlGn',
                         low=0.6, 
                         high=0.8, 
                         subset=pd.IndexSlice[1:4,:]).highlight_null('red')

pic

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