pd.read_fwf()vs pd.read_table()在读取大文件时给出差异

时间:2018-02-16 08:39:08

标签: python pandas dataframe file-io

 df = pd.read_table("/media/jaideep/4F95-2DF2/test.txt", header = 11, delimiter = "|",encoding = "latin1", low_memory = False, comment = "#")

生成维度的数据框:[1100563行x 56列]

而,

 df = pd.read_fwf("/media/jaideep/4F95-2DF2/test.txt", header = 11, delimiter = "|",encoding = "latin1",comment = "#")

生成尺寸为[1100654行×10列]

的DataFrame

使用pd.read_table()需要考虑100行的差异,因为输入文件不是固定宽度的文件

- 请指出正确的方向,以及为什么pd.read_table()跳过了100行。谢谢!!

3 个答案:

答案 0 :(得分:0)

请注意,read_fwf()也会删除46列,这当然也很重要。只是眼球说行1..4,看看你是否能发现差异。

无论如何,发现差异的显而易见的方法是(视觉上)二元搜索:直观地比较df1[1:n]df2[1:n](或df1[n]df2[n])直到你看看它插入/删除行的位置。从n开始,比如n = 5,然后逐渐增加,直到找到不匹配的行。

答案 1 :(得分:0)

df = pd.read_table("/home/jaideep/data1.txt",header = 11, delimiter ="\ |", low_memory = False)

设置分隔符=“\ |”而不是delimiter =“|”为我工作。

pandas.read_table()文档声明:

要使用的分隔符。如果sep为None,则会尝试自动确定。超过1个字符且不同于's +'的分隔符将被解释为正则表达式,将强制使用python解析引擎并忽略数据中的引号。正则表达式示例:'rt'

所以也许是元字符反斜杠,。与Python字符串文字一样,反斜杠后面可以跟各种字符,以指示各种特殊序列。它也用于转义所有元字符,因此您仍然可以在模式中匹配它们;例如,如果你需要匹配[或\,你可以在它们前面加上反斜杠来删除它们的特殊含义:[或\。

答案 2 :(得分:0)

read_table已过时,请改用read_csv

这是official

供参考:

  

read_csv       将逗号分隔值(csv)文件读取到DataFrame中。

     

read_fwf       将固定宽度格式的行表读入DataFrame。