Перемещение строковых данных в новые столбцы, где число значений является произвольным - PullRequest
0 голосов
/ 29 марта 2019

Я извлекаю собственные имена из столбца, содержащего строковые данные. Я хочу переместить извлеченные существительные в новый столбец в виде списка (или, альтернативно, как одно существительное на дополнительный столбец). Я извлекаю произвольное (а иногда и большое) число существительных в каждой записи.

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

    from nltk.tokenize import PunktSentenceTokenizer

    data = []
    norm_data['words'] = []
    for sent in norm_data['gtd_summary']:
        sentences = nltk.sent_tokenize(sent) 
        data = data + nltk.pos_tag(nltk.word_tokenize(sent))
        for word in data: 
            if 'NNP' in word[1]: 
                nouns = list(word)[0]
                norm_data['words'].append(nouns)

Текущие данные

X   Y
1   Joe Montana walks over to the yard
2   Steve Smith joins the Navy
3   Anne Johnson wants to go to a club
4   Billy is interested in Sally

Что я хочу

X   Y                                       Z
1   Joe Montana walks over to the yard      [Joe, Montana]
2   Steve Smith joins the Navy              [Steve, Smith, Navy]
3   Anne Johnson wants to go to a club      [Anne, Johnson]
4   Billy is interested in Sally            [Billy, Sally]

ИЛИ Это тоже нормально

    X   Y                                       Z      L            M
    1   Joe Montana walks over to the yard      Joe    Montana      NA
    2   Steve Smith joins the Navy              Steve  Smith        Navy
    3   Anne Johnson wants to go to a club      Anne   Johnson      NA
    4   Billy is interested in Sally            Billy  Sally        NA

1 Ответ

0 голосов
/ 29 марта 2019

Вы можете создать Серию, которая содержит списки. И после цикла добавьте столбец Z к кадру данных (я полагаю, ваши данные находятся в кадре данных?)

# Init before the loop
noun_series = pd.Series()
    ...
    # Build up series 
    nouns = list(word)[0]
    noun_series.at[index] = nouns
    index += 1
    ...
# After the loop - add the Z column
df['Z'] = noun_series

Вы должны правильно установить индекс, чтобы он соответствовал правильной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...