繁体   English   中英

如何处理pandas.read_csv中的元数据行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM