[英]How to deal with metadata lines in pandas.read_csv?
我有一个txt文件,其中包含元数据的标头,然后是csv样式的实际数据。 数据包含带逗号的浮点数。 像这样:
title = someTitle
date = 20.0.2019
col= str1 str2 str3
2,49 42,01 -0,50
5,74 11,03 -0,43
....
我需要大熊猫(0.24.0)中的全部信息,并希望数据为浮点数。
df = pd.read_csv(path,sep='\t',decimal=',',names=[i for i in range(3)])
在这种情况下,十进制选项没有区别。 我总是得到琴弦。 没有元数据,它可以完美运行。 例如:
pd.read_csv(...,skiprows=3)
在我看来,大熊猫似乎以第一行来假定行的类型。
那么如何告诉熊猫忽略元数据呢?
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.