擅长:python、mysql、java
<p>代码中缺少的一个细节是未能传递<em>宽度</em>参数</p>
<p>但这还不是全部。
另一个问题是,不幸的是,<em>read_fwf</em>包含这样一个bug,以至于
<strong>忽略</strong><em>跳过空白行</em>参数</p>
<p>为了解决这个问题,定义下面的类,包含<em>readline</em>方法
跳过空行:</p>
<pre><code>class LineFilter(io.TextIOBase):
def __init__(self, iterable):
self.iterable = iterable
def readline(self):
while True:
line = next(self.iterable).strip()
if line:
return line
</code></pre>
<p>然后运行:</p>
<pre><code>df = pd.read_fwf(LineFilter(io.StringIO(s)), widths=[7, 6, 30, 8, 6, 8, 9, 8, 9, 9],
parse_dates=["BEGIN", "END"], na_filter=False)
</code></pre>
<p>如您所见,我添加了<em>na_filter=False</em>以阻止
空字符串到<em>NaN</em>值</p>