Python Преобразование фрейма данных в фрейм данных R с нулевыми значениями - PullRequest
0 голосов
/ 03 августа 2020

Я конвертирую пустые python фреймы данных в r фреймы данных, используя пакет rpy2, который работает очень хорошо, за исключением того, что у меня есть нули в моих столбцах, вызывающих ошибку во время преобразования

patients_list_df = load_df_state('temp_data/patients_list_df.csv')
with localconverter(ro.default_converter + pandas2ri.converter):
    patients_list_df = ro.conversion.py2rpy(patients_list_df)

/ Users / dev / venv / lib / python3 .7 / site-packages / rpy2 / robjects / pandas2ri.py: 63: UserWarning: Ошибка при попытке преобразовать столбец «term_dt_datetime». Вернитесь к преобразованию строк. Ошибка: серия может быть только одного типа или None (а здесь у нас и ). % (name, str (e))) AttributeError: объект 'float' не имеет атрибута 'encode'

У меня есть 5 фреймов данных, некоторые из нулевых значений представлены в python pandas как NaN некоторые как NaT, но я не уверен, как решить эту проблему в коде R. Столбцы будут обрабатываться в соответствии с их типом данных позже.

Версии:

pandas == 1.0.1

rpy2 ~ = 3.3.5

1 Ответ

0 голосов
/ 10 августа 2020

rpy2 быстро уклоняется от предположения, каким может быть тип столбца (Series) в pandas DataFrame. Здесь, вероятно, происходит то, что у вас есть столбец типа numpy.dtype('O'), то есть каждый элемент в этом столбце / numpy 1D-массив может быть объектом Python любого типа.

Значение по умолчанию for rpy2 - это проверить, являются ли типы в массиве однородными: только один тип или None / NaN / pandas.isna() возвращает True для всех элементов в массиве. Код здесь: https://github.com/rpy2/rpy2/blob/v3.3.x/rpy2/robjects/pandas2ri.py#L170

Так что теоретически проблем быть не должно. Если вы сможете предоставить минимальный автономный пример для его воспроизведения, вам будет легче увидеть, что это происходит.

...