Обработка строк в Python

1

У меня есть текстовый файл, из которого я пытаюсь создать pandas DF

Name John Doe
Country Wakanda
Month of birth January 1900
social status married

....

После каждых 4 строк появляется новая запись, подобная этой. Структура кадра данных, которую я пытаюсь создать

      Name      Country .    Month of Birth .       social status

0 . John Doe .  Wakanda        January 1900           married

Текущий подход:

Я использую очень неэффективный итеративный подход для извлечения записей в виде списка списков, где каждый список является строкой для DF.

Существует ли лучший пифонический подход для разделения имен столбцов на значения и извлечение значений в одиночку.

PS. Я не прошу ввести код. Любое предложение по этому подходу было бы замечательным.

  • 0
    Имена полей всегда одинаковы? И в том же порядке?
  • 0
    @TiagoGomes имена полей совпадают, но иногда одно из полей может не иметь никакого значения, поэтому там должно быть NA или ноль в этой позиции для DF
Показать ещё 1 комментарий
Теги:
pandas

1 ответ

0

Возможно, подход может состоять в том, чтобы иметь список потенциальных совпадений для каждой из записей, а для каждой записи итерации через этот список и разбиение ключевых слов в случае совпадения.

В качестве примера для отдельной записи:

text = 'Month of birth January 1900'
keys = ['Month of birth', 'Date of birth' 'Birth']

Когда вы будете искать совпадения, выбор будет состоять в том, чтобы выбрать самую короткую строку из списка, что означает, что больше слов совпало:

min([text.strip(x) for x in keys])
'January 1900'

Вы просто следуете этому подходу для разных полей и создаете фрейм данных из полученных строк. Вы также можете рассмотреть возможность создания строк перед поиском в ключевых словах. Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню