Не зная больше о структуре данных, я бы порекомендовал попробовать pd.read_csv("mycsv.csv").astype(np.float32)
.astype
попытается преобразовать данные в DataFrame в указанный формат.
Вышеприведенное должно решить вашу проблему, но вы также можете проверить версию используемых вами панд (иэто документация для to_csv
и read_csv
).
В версии pandas 0.23.4
на Python 3.7 мне удалось записать в CSV фрейм данных, полный float64, и успешно прочитать их с правильными типами dty.
Сначала сгенерировать некоторые данные,запишите его, затем прочитайте обратно (при условии, что weight_list
является матрицей чисел с плавающей запятой):
>>> import numpy as np
>>> import pandas as pd
>>> # Generate dummy dataframe and write it to a CSV
>>> weights=np.random.rand(10,10) # Generate dummy 10x10 matrix of random floats
>>> names=['name{}'.format(i) for i in range(10)] # Generate dummy names and variable names
>>> var_list = ['var{}'.format(i) for i in range(10)]
>>> df0 = pd.DataFrame(data=weights, columns=var_list, index=names)
>>> df0.to_csv("test.csv")
>>> # Load the CSV back into a new dataframe
>>> df1=pd.read_csv("test.csv")
Затем убедитесь, что dtypes верны (df0.values
просто возвращает данные внутри DataFrame в виде пустого ndarray.Вы также можете проверить df0.dtypes
):
>>> # Verify the dtypes are float64, as they were originally
>>> df1.values.dtype
dtype('float64')
>>> df0.values.dtype
dtype('float64')