Python 关于字符串到数组和数组到字符串?
我使用Python 关于字符串到数组和数组到字符串?,python,pandas,dataformat,Python,Pandas,Dataformat,我使用df.to_csv函数来存储信息,元素的格式是权重列表中的np.float32,如下所示 df = pd.DataFrame(data=weight_list,index=img_names,columns=var_list) df.to_csv('{}/{}'.format(dirs_path,csv_name)) 然后,我使用pandas.read_csv加载csv文件,元素的值肯定是字符串格式。如何将字符串转换为np.float32 更多信息:csv文件中的元素类型为数组,数组具有
df.to_csv
函数来存储信息,元素的格式是权重列表中的np.float32
,如下所示
df = pd.DataFrame(data=weight_list,index=img_names,columns=var_list)
df.to_csv('{}/{}'.format(dirs_path,csv_name))
然后,我使用pandas.read_csv
加载csv文件,元素的值肯定是字符串格式。如何将字符串转换为np.float32
更多信息:csv文件中的元素类型为数组,数组具有不同的维度,如下所示:
在不了解更多数据结构的情况下,我建议尝试使用
pd.read\u csv(“mycsv.csv”).astype(np.float32)
astype
将尝试将数据帧内的数据强制转换为指定格式
以上内容可以解决您的问题,但您可能还需要检查您正在使用的pandas的版本(以及
to_csv
和read_csv
的文档)
在Python3.7上的pandas版本0.23.4
上,我能够将一个装满float64的数据帧写入CSV,并成功地用正确的数据类型将其读回
首先生成一些数据,将其写入,然后将其读回(假设您的weight\u列表
是浮动矩阵):
然后验证数据类型是否正确(df0.values
仅将数据帧内的数据作为numpy数据数组返回。您也可以检查df0.dtypes
):
在不了解更多数据结构的情况下,我建议尝试
pd.read\u csv(“mycsv.csv”).astype(np.float32)
astype
将尝试将数据帧内的数据强制转换为指定格式
以上内容可以解决您的问题,但您可能还需要检查您正在使用的pandas的版本(以及
to_csv
和read_csv
的文档)
在Python3.7上的pandas版本0.23.4
上,我能够将一个装满float64的数据帧写入CSV,并成功地用正确的数据类型将其读回
首先生成一些数据,将其写入,然后将其读回(假设您的weight\u列表
是浮动矩阵):
然后验证数据类型是否正确(df0.values
仅将数据帧内的数据作为numpy数据数组返回。您也可以检查df0.dtypes
):
提示:请不要发布代码图片。复制粘贴到问题中,然后改为。一个简单的提醒:请不要发布代码的图片。复制粘贴到问题中。嗨,谢谢。也许我的描述不够详细,我添加了一些关于我的csv文件的数据结构的详细信息。啊,好的,看起来你试图在数据框单元格中存储向量。您可以尝试序列化为json(
df.to_json
,pd.read_json
)。首先,熊猫通常用于2D数据集,其中每列都是1D系列。您可能希望尝试重新构造数据,使其成为2D(可能将每个列扩展为2个1D列),或者探索一个选项,如您确实需要N-D数据帧。您好,谢谢。可能我的描述不够详细,我添加了一些有关我的csv文件的数据结构的详细信息。啊,好的,看起来您正试图在数据帧单元格中存储向量。您可以尝试序列化为json(df.to_json
,pd.read_json
)。首先,熊猫通常用于2D数据集,其中每列都是1D系列。您可能希望尝试重新构造数据,使其成为二维数据(可能将每个列扩展为2个1D列),或者探索一个选项,如您确实需要N-D数据帧。
>>> 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")
>>> # Verify the dtypes are float64, as they were originally
>>> df1.values.dtype
dtype('float64')
>>> df0.values.dtype
dtype('float64')