我有一个txt文件,其中包含元数据的标题,后跟csv样式的实际数据。数据包含带逗号的浮点数。像这样:
title = someTitle
date = 20.0.2019
col= str1 str2 str3
2,49 42,01 -0,50
5,74 11,03 -0,43
....
我需要以pandas(0.24.0)为单位的全部信息,并希望数据为浮点数。
df = pd.read_csv(path,sep='\t',decimal=',',names=[i for i in range(3)])
在这种情况下,十进制选项没有区别。我总是得到琴弦。没有元数据,它可以完美运行。例如者:
pd.read_csv(...,skiprows=3)
在我看来,大熊猫似乎以第一行作为行的类型。
那么如何告诉熊猫忽略元数据呢?
答案 0 :(得分:0)
read_csv
可以从对象之类的文件中读取,因此您应该打开该文件,读取3行作为标题,提取列名,然后在read_csv
中使用它们。另外,您可以使用dtype
选项强制使用数据类型。代码可能是:
with open(path) as fd:
headers = [ next(fd) for i in range(3) ]
df = pd.read_csv(fd, sep=' ', decimal=',', dtype=np.float, names=...)
如果需要,可以使用标题部分设置列名称:
with open(path) as fd:
headers = [ next(fd) for i in range(3) ]
cols = headers[2].split('=', 1)[1].strip().split(' ')
df = pd.read_csv(fd, sep=' ', decimal=',', dtype=np.float, names=cols)
您会得到:
str1 str2 str3
0 2.49 42.01 -0.50
1 5.74 11.03 -0.43