Python Pandas 不读取 csv 文件的第一行

标签 python numpy pandas load

我在 pandas 模块上读取 CSV(或 txt 文件)时遇到问题 因为 numpy 的 loadtxt 函数耗时太长,所以我决定改用 pandas 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 的长度。

我需要帮助。

提前致谢。

最佳答案

默认情况下,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

关于Python Pandas 不读取 csv 文件的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28382735/

相关文章:

python - CouchDB urlencode Python

python - Django:为什么 NullBooleanField 接受非 bool 答案?

numpy - 约束 Qhull 生成的 Voronoi 顶点的域

python - Google App Engine - 缺少 numpy.core.multiarray

python - Numpy 与 Python 浮点计算产生不同的结果

python - 无法在 OS X Mavericks 上导入正确版本的 numpy

python - 不确定为什么打印功能没有发生

python-3.x - 使用 pandas 处理代理

python - 使用 np.where 根据条件在 pandas df 中创建一个新列

python - 计算匹配字符串的实例和累计总值