关于字符串到数组和数组到字符串?

时间:2019-02-21 03:00:06

标签: python pandas dataformat

我使用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

1 个答案:

答案 0 :(得分:2)

在不了解更多数据结构的情况下,我建议尝试使用pd.read_csv("mycsv.csv").astype(np.float32)astype将尝试将数据投射到指定格式的DataFrame内部。


以上内容可以解决您的问题,但您可能还需要检查使用的熊猫的版本(以及to_csvread_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')