Рассмотрим этот простой набор данных, столбцы которого вырезаны квантилями.
kyle = pd.DataFrame({'foo':np.random.randint(0,100,100),'boo':np.random.randint(0,100,100)})
kyle.loc[:,'fooCut'] = pd.qcut(kyle.loc[:,'foo'], np.arange(0,1.1,.1))
kyle.loc[:,'booCut'] = pd.qcut(kyle.loc[:,'boo'], np.arange(0,1.1,.1))
Предыдущие версии Pandas
обрабатывали приведенное ниже, как и ожидалось ...
pd.crosstab(kyle.fooCut,kyle.booCut)
После обновления доверсия '0.24.2', выше выкидывает мне TypeError: Cannot cast array data from dtype('float64') to dtype('<U32') according to the rule 'safe'
Кто-нибудь знает почему и как это решить? Обратите внимание , что здесь kyle.boocut.dtype
возвращает CategoricalDtype
, тип такой же, как в документации pd.crosstab
и примере для категориальных переменных.
[Обновление]
Это известная ошибка в пандах и исправляется