Допущения:
- input - это текстовый файл, ориентированный на строки
- пустые строки должны игнорироваться
- строки, не содержащие двоеточия (
':'
), объявляют a новая запись - строки, содержащие двоеточия, объявляют атрибуты для текущей записи
Это не тот формат файла, который pandas может обрабатывать напрямую, но Python может легко составить список записи, которые позже будут снабжать фрейм данных:
records = []
current = None
fieldnames = ['Person']
with open('inputfile') as file:
for line in file:
line = line.strip()
if len(line) != 0: # ignore empty lines
if ':' in line: # a characteristic line
attr, value = line.split(':', 1)
attr = attr.strip()
current[attr] = value.strip()
if not attr in fieldnames:
fieldnames.append(attr)
else: # a person line
current = {'Person': line}
records.append(current)
df = pd.DataFrame(columns = fieldnames, data = records)
С вашими данными выборки, это дает, как и ожидалось:
Person Characteristic 1 Characteristic 2
0 Person 1 Value Value
1 Person 2 Value NaN