当skiprows是一个函数时,Pandas read_fwf错误

时间:2017-10-19 00:54:28

标签: python pandas

我正在尝试读取一个非常大的固定宽度格式文件并逐段处理。

docs on pandas.read_fwf表示

enter image description here

然而,我似乎无法做到这一点。

这个小小的罪犯再现了这个问题。它尝试将具有四行的类似文件读入两个数据帧,每个数据帧分别为两行:

import pandas as pd
try: from cStringIO import StringIO # for Python2
except ImportError: from io import StringIO # for Python3

content = '''\
  Foo Bar  Baz
_____ ___ ____
  1.0   2    A
  3.0   4    B
  7.0   6    C
 10.0   8    D
'''

widths = [len(s) + 1 for s in content.split('\n')[1].split()]
widths[-1] -= 1

df01 = pd.read_fwf(StringIO(content), 
                   widths=widths, 
                   header=0, 
                   skiprows=[1], 
                   nrows=2)

df23 = pd.read_fwf(StringIO(content), 
                   widths=widths, 
                   header=0, 
                   skiprows=lambda r: 1 <= r <= 3, 
                   nrows=2)

这会导致以下错误(跟踪消除):

TypeError: 'function' object is not iterable

在这种情况下,我显然可以用列表[1, 2, 3]替换lambda,但是当我试图跳过1-1,999,999和3,000,000-11,000,000行时,这是不切实际的。

这是pandas read_fwf中的错误吗?文档中的错误?

有什么建议可以更好地完成这项任务吗?

0 个答案:

没有答案