我使用df.to_csv
函数存储信息,并且元素的格式为np.float32
中的weight_list
,如下所示。
df = pd.DataFrame(data=weight_list,index=img_names,columns=var_list)
df.to_csv('{}/{}'.format(dirs_path,csv_name))
然后,我使用pandas.read_csv
加载csv文件,element的值肯定是字符串格式。如何将字符串转换为np.float32
?
更多信息:元素的类型是csv文件中的数组,并且数组具有不同的尺寸,如下所示: csv data structure
答案 0 :(得分:2)
在不了解更多数据结构的情况下,我建议尝试使用pd.read_csv("mycsv.csv").astype(np.float32)
。 astype
将尝试将数据投射到指定格式的DataFrame内部。
以上内容可以解决您的问题,但您可能还需要检查使用的熊猫的版本(以及to_csv
和read_csv
的文档)。
在Python 3.7上的pandas版本0.23.4
上,我能够将充满float64的数据帧写入CSV,并成功以正确的dtypes读回它们。
首先生成一些数据,将其写入,然后再读回(假设您的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
只是以numpy ndarray的形式返回DataFrame中的数据。您也可以选择df0.dtypes
):
>>> # Verify the dtypes are float64, as they were originally
>>> df1.values.dtype
dtype('float64')
>>> df0.values.dtype
dtype('float64')