Как заменить строку в другой позиции в предложении другим столбцом - PullRequest
0 голосов
/ 29 апреля 2018

У меня проблема с тем, как заменить строку в позиции, отличной от 0, в предложении, используя мою функцию.

Я хочу заменить строку в col2 на строку в col1 (всегда в нижнем регистре)

Например, я хочу попробовать заменить:

input: Hello Aaa1 my very good friend
output: Hello NNP my very good friend

Теперь у меня есть только:

input: Aaa1 my very good friend
output: NNP my very good friend

Я хочу заменить строку во всех позициях предложения.

Я пытаюсь:

## import libraries
from nltk import word_tokenize, pos_tag, pos_tag_sents

## tag the sentece
df['col2'] = df['col2'].apply(word_tokenize).apply(pos_tag)

## this function does the magic 
def get_vals(lst):
    op = [] 
    for i, v in enumerate(lst):
        if i == 0:
            op.append(v[1])
        else:
            op.append(v[0])
    return ' '.join(op)

## apply the function
df['col2'] = df['col2'].apply(get_vals)

print(df)

   col1                      col2
0  aaa1     NNP is a great friend
1  abb2  NN is a very good friend

Edit:

У меня есть:

col1           col2                output
aaa1          AAA1 Hello hello     NNP Hello hello
aaa2          aaa2 hello hello     NN hello hello
aaa3          Hello AAa3 hello     Hello NNP hello

Я хочу заменить в каждой строке определенный POS-тег (не только одну строку для NNP)

1 Ответ

0 голосов
/ 29 апреля 2018

Использование re

import re
inp = "Hello Aaa1 my very good friend"
output = "Hello NNP my very good friend"

re.sub("Aaa1", "NNP", output)

Использование панд

import pandas as pd
df = pd.DataFrame(data={"col": [inp]})
df["col"].str.replace("Aaa1", "NNP")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...