Python Pandas不读取csv fi的第一行

2024-09-28 13:12:32 发布

您现在位置:Python中文网/ 问答频道 /正文

在pandas模块上读取CSV(或txt文件)时遇到问题 因为numpy的loadtxt函数花费了太多时间,所以我决定使用pandas read_csv代替。

我想从txt文件中创建一个numpy数组,它有四列用空格隔开,并且有非常多的行(比如,256^3)。在本例中,它是64^3)。

问题是我不知道为什么,但熊猫的read_csv似乎总是跳过csv(txt)文件的第一行(第一行),从而减少一个数据。

这是密码。

from __future__ import division
import numpy as np
import pandas as pd
ngridx = 4
ngridy = 4
ngridz = 4
size = ngridx*ngridy*ngridz
f = np.zeros((size,4))
a = np.arange(size)
f[:, 0] = np.floor_divide(a, ngridy*ngridz)
f[:, 1] = np.fmod(np.floor_divide(a, ngridz), ngridy)
f[:, 2] = np.fmod(a, ngridz)
f[:, 3] = np.random.rand(size)
print f[0]
np.savetxt('Testarray.txt',f,fmt='%6.16f')
g = pd.read_csv('Testarray.txt',delimiter=' ').values
print g[0]
print len(g[:,3])

输出中显示的f[0]和g[0]必须匹配,但不匹配,这表示pandas跳过了Testarray.txt的第一行。 此外,加载的文件g的长度小于数组f的长度。

我需要帮助。

提前谢谢。


Tags: 文件csvimportnumpytxtpandasreadsize
2条回答

如果文件没有标题行,则需要在调用pd.read_csv()时使用header=None来告诉Pandas。

默认情况下,pd.read_csv使用header=0(当names参数也未指定时),这意味着第一行(即第0个索引)被解释为列名。

如果数据没有标题,则使用

pd.read_csv(..., header=None)

例如

import io
import sys
import pandas as pd
if sys.version_info.major == 3:
    # Python3
    StringIO = io.StringIO 
else:
    # Python2
    StringIO = io.BytesIO

text = '''\
1 2 3
4 5 6
'''

print(pd.read_csv(StringIO(text), sep=' '))

如果没有header,第一行1 2 3将设置列名:

   1  2  3
0  4  5  6

对于header=None,第一行被视为数据:

print(pd.read_csv(StringIO(text), sep=' ', header=None))

印刷品

   0  1  2
0  1  2  3
1  4  5  6

相关问题 更多 >

    热门问题