Как я могу заменить базовое предложение в pandas.Series? - PullRequest
0 голосов
/ 05 мая 2018

Здесь я получил pandas.series под названием «traindata».

    0       Published: 4:53AM Friday August 29, 2014 Sourc...
    1       8  Have your say\n\n\nPlaying low-level club c...
    2       Rohit Shetty has now turned producer. But the ...
    3       A TV reporter in Serbia almost lost her job be...
    4       THE HAGUE -- Tony de Brum was 9 years old in 1...
    5       Australian TV cameraman Harry Burton was kille...
    6       President Barack Obama sharply rebuked protest...
    7       The car displaying the DIE FOR SYRIA! sticker....
    8       \nIf you've ever been, you know that seeing th...
    9       \nThe former executive director of JBWere has ...
    10      Waterloo Road actor Joe Slater has revealed hi...
                        ... 
    **Name: traindata, Length: 2284, dtype: object**

и что я хочу сделать, это заменить значение series.values ​​на предложения с основанием.

моя мысль - построить новую серию и вставить предложенное предложение. мой код, как показано ниже:

    from nltk.stem.porter import PorterStemmer

    stem_word_data = np.zeros([2284,1])
    ps = PorterStemmer()
    for i in range(0,len(traindata)):
        tst = word_tokenize(traindata[i]) 
        for word in tst:
            word = ps.stem(word)    
            stem_word_data[i] = word

и затем возникает ошибка:

    ValueError: could not convert string to float: 'publish'

Кто-нибудь знает, как исправить эту ошибку, или у кого-то есть лучшее представление о том, как заменить значения series.values ​​на предложение в виде ствола? спасибо.

1 Ответ

0 голосов
/ 05 мая 2018

Вы можете использовать apply в серии и избегать написания циклов.

from nltk import word_tokenize
from nltk.stem import PorterStemmer

## intialise stemmer class
pst = PorterStemmer()

## sample data frame
df = pd.DataFrame({'senten': ['I am not dancing','You are playing']})

## apply here
df['senten'] = df['senten'].apply(word_tokenize)
df['senten'] = df['senten'].apply(lambda x: ' '.join([pst.stem(y) for y in x]))

print(df)

          senten
0  I am not danc
1   you are play
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...