Pandas read_table()缺少行

时间:2017-02-07 18:45:47

标签: python pandas numpy

Pandas read_table功能缺少我尝试阅读的文件中的某些行,但我无法找到原因。

import pandas as pd
import numpy as np
filename = "whatever.txt"

df_pd = pd.read_table(filename, use_cols=['FirstColumn'], skip_blank_lines=False)
df_np = np.genfromtxt(filename, usecols=0)

#function to count file line by line
def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

len_pd = len(df_pd)
len_np = len(df_np)
len_linebyline = file_len(filename)

不幸的是,我无法分享我的实际数据,因为它是一个巨大的文件,30列x 5800万行,除了受许可保护。由于某种原因,numpy和file_len方法给出了大约5800万行的正确长度,但是pandas方法只有大约5500万行。

是否有人对可能导致此问题的原因或如何对其进行调查有任何想法?

1 个答案:

答案 0 :(得分:1)

使用以下方法,您可以尝试查找缺少的数据:

In [31]: df = pd.DataFrame({'col':[0,1,2,3,4,6,7,8]})

In [32]: a = np.arange(10)

In [33]: df
Out[33]:
   col
0    0
1    1
2    2
3    3
4    4
5    6
6    7
7    8

In [34]: a
Out[34]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [35]: np.setdiff1d(a, df.col)
Out[35]: array([5, 9])