vin*_*pal 2 numpy file type-conversion pandas
我有一个数据框,其中一列是一个 numpy 数组:
DF
Name Vec
0 Abenakiite-(Ce) [0.0, 0.0, 0.0, 0.0, 0.0, 0.043, 0.0, 0.478, 0...
1 Abernathyite [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
2 Abhurite [0.176, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.235, 0...
3 Abswurmbachite [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.0,...
Run Code Online (Sandbox Code Playgroud)
当我检查每个元素的数据类型时,会返回正确的数据类型。
type(DF['Vec'].iloc[1])
numpy.ndarray
Run Code Online (Sandbox Code Playgroud)
我将其保存到一个 csv 文件中:
DF.to_csv('.\\file.csv',sep='\t')
Run Code Online (Sandbox Code Playgroud)
现在,当我再次阅读文件时,
new_DF=pd.read_csv('.\\file.csv',sep='\t')
Run Code Online (Sandbox Code Playgroud)
并检查索引 1 处 Vec 的数据类型:
type(new_DF['Vec'].iloc[1])
str
Run Code Online (Sandbox Code Playgroud)
numpy 数组的大小为 1x127。
数据类型已从 numpy 数组更改为字符串。我还可以在各个向量中看到一些新的线元素。我认为这可能是由于将向量写入 csv 时出现了一些问题,但我不知道如何修复它。有人可以帮忙吗?
谢谢!
在评论中我犯了一个错误并说dtype而不是converters。您想要的是在使用函数阅读它们时转换它们。使用一些虚拟变量:
df=pd.DataFrame({'name':['name1','name2'],'Vec':[np.array([1,2]),np.array([3,4])]})
df.to_csv('tmp.csv')
def converter(instr):
return np.fromstring(instr[1:-1],sep=' ')
df1=pd.read_csv('tmp.csv',converters={'Vec':converter})
df1.iloc[0,2]
array([1., 2.])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |