我在panda模块上阅读CSV(或txt文件)时遇到了一个问题。因为numpy的loadtxt函数花费了太多时间,所以我决定使用panda read_csv来代替。
我想从txt文件中创建一个numpy数组,它有四列,用空格隔开,并且有非常多的行(比如,256^3。在这个例子中,它是64^3)。
问题是,我不知道为什么,Pandas的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
的长度。
2条答案
按热度按时间swvgeqrz1#
默认情况下,
pd.read_csv
使用header=0
(当names
参数也未指定时),这意味着第一行(即第0个索引)被解释为列名。如果数据没有标头,则使用
例如,
如果没有
header
,则第一行1 2 3
设置列名:对于
header=None
,第一行被视为数据:印刷品
kqqjbcuj2#
如果您的文件没有标题行,您需要在调用www.example.com_csv()时使用header=None来告诉Pandaspd.read。