Вся задача может быть выполнена в инструкции single , без подсчета элементов в каждой строке.
Я подготовил такой пример чтения из строки, используя io.StringIO :
df = pd.DataFrame([ ln.rstrip().split('\t') for ln in
io.StringIO(txt).readlines() ]).fillna('')
Понимание списка преобразует каждую строку источника в список фрагментов (между Tab s).
Тогда это понимание списка data параметр pd.DataFrame и обратите внимание, что такой список строк может содержать строки различной длины.
Я также добавил fillna ('') для преобразования каждого NaN в пустую строку (вы можете удалить ее, если хотите).
Чтобы запустить тест, я определил исходную переменную как:
txt = '''x
x
x y
x
x y z
x
x y z v'''
end выполнил вышеуказанный код, получив:
0 1 2 3
0 x
1 x
2 x y
3 x
4 x y z
5 x
6 x y z v
В целевой версии замените чтение из строки на чтение из stdin .