Могут ли модели состояний обрабатывать обнуляемый тип данных Int64 Pandas? Если нет, то лучший обходной путь?

#python #pandas #statsmodels #nullable

Вопрос:

(Я думаю) Я обнаружил, что модуль statsmodels (или, по крайней мере, та часть, которую я использую, см. Пример ниже) не может обрабатывать обнуляемый тип данных Pandas Int64. Ниже приведен небольшой (хотя я сомневаюсь, что минимальный) рабочий пример.

Это прекрасно работает:

 import statsmodels.formula.api as smf
import pandas as pd

x= pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a','b','c'])
mod = smf.ols(formula = 'a ~ b   c', data = x)
# worked just fine. data types are (non-nullable) int64's
 

Но это не так:

 import statsmodels.formula.api as smf
import pandas as pd

x= pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a','b','c'])
x = x.convert_dtypes()
mod = smf.ols(formula = 'a ~ b   c', data = x)
# now an error: TypeError: Cannot interpret 'Int64Dtype()' as a data type
 

Верен ли мой вывод? Если да, то есть ли лучший (или, по крайней мере, хитрый) обходной путь?

версия моделей состояния: 0.12.2 версия панд: 1.1.5

Комментарии:

1. Вы также можете открыть выпуск на github. Более того, если вы также работаете с типами данных, отличными от integer, возможно, вы могли бы сделать это x.convert_dtypes(convert_integer=False) и проверить.

2. @Wave Да, это работает, но на самом деле я работаю с другим фреймом данных, где типы импортируются (через pd. readcsv) автоматически как Int64. Я полагаю, что на этом шаге я просто объявлю тип(ы) данных. Спасибо!

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