У меня есть pandas Dataframe со смешанными типами данных (float64 и строки), чтобы использовать его в конвейере sklearn Мне нужно преобразовать его в массив numpy. В конце конвейера я хочу снова создать Dataframe.
Проблема заключается в том, что при создании массива numpy со смешанными типами все данные преобразуются в d-тип "объект". Таким образом, когда я создаю новый кадр данных в конце, все данные являются категориальными.
Пример:
Кадр данных со смешанными данными
>>> dataframe = pd.DataFrame([[1,2,3],["a","b","c"]], columns = ["num", "cat"])
>>> dataframe.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 num 3 non-null int64
1 cat 3 non-null object
dtypes: int64(1), object(1)
memory usage: 176.0+ bytes
К numpy массиву
>>> array = dataframe.to_numpy()
array([[1, 'a'],
[2, 'b'],
[3, 'c']], dtype=object)
Назад к фрейму данных
>>> new_df = pd.DataFrame(array, columns = ["num", "cat"])
>>> new_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 num 3 non-null object
1 cat 3 non-null object
dtypes: object(2)
memory usage: 176.0+ bytes
Теперь два столбца являются категориальными.
Есть ли способ заставить pandas распознавать истинные типы данных в массиве numpy?