В вашем коде отсутствует одна деталь: вам не удалось передать параметр widths .
Но это еще не все. Другая проблема заключается в том, что, к сожалению, read_fwf содержит такую ошибку, что игнорирует параметр skip_blank_lines .
Чтобы справиться с этим, определите следующий класс , содержащий readline метод пропуска пустых строк:
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
Затем запустите:
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)
Как видите, я добавил na_filter = False блокировать преобразование пустых строк в NaN значения.