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

时间:2019-02-01 14:51:07

标签: python pandas

我有一个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)

在我看来,大熊猫似乎以第一行作为行的类型。

那么如何告诉熊猫忽略元数据呢?

1 个答案:

答案 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