Токенизировать каждую строку в кадре данных - цикл не работает - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь маркировать предложение в кадре данных панд, но у меня возникли некоторые проблемы

Я знаю, что этот код работает, чтобы скрыть только одну строку

TextBlob(df['H'][0]).words

Но когда я попытался применить его в цикле for, я получил ошибку

for i, row in df.H():
ifor_val = TextBlob(df['H'][i]).words
df.at[i,'ifor'] = H

Сообщение об ошибке: Ошибка типа: объект 'Series' не может быть вызван

Edit:

data = {'H':['the quick brown fox jumps over the road', 'the weather is nice 
today'], 'marks':[99, 98]} 
df = pd.DataFrame(data) 

желаемый

H                                  marks
['the','quick','brown', 'fox'....]   99
['the','weather','is', 'nice'....]   98

РЕШЕНИЕ:

DF [ 'H'] = DF [ 'Н']. применить (word_tokenize) DF [ 'Н']. головка ()

Ответы [ 3 ]

0 голосов
/ 08 апреля 2019

это дало мне то, что вы хотели:

data = {'H':['the quick brown fox jumps over the road', 'the weather is nice today'], 'marks':[99, 98]} 
df = pd.DataFrame(data) 

print(df)


df2 = df.drop("H",axis=1).copy()


df2.insert(loc=0, column='H', value=[[] for x in range(df.shape[0])])

for index, row in df2.iterrows():
    vals = df.loc[index,"H"].split()

    for word in vals : 
        df2.loc[index,"H"].append(word) 

print(df2)

0 голосов
/ 08 апреля 2019

Если вы хотите перебрать пары столбец индекс - значение (в данном случае строки), вам понадобится метод столбца iteritems ():

for i,  s in df.H.iteritems():
    pass #  Do stuff with your values

Лучше добавить новый столбец, а не перезаписывать старый.

0 голосов
/ 08 апреля 2019

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

Предполагая, что H - это столбец, на который вы нацеливаетесь, а каждая строка - это точный текст, который вы хотите отправить в TextBlob, следующее добавит столбец с именем 'output', который будет результатом функции TextBlob

df['output'] = df['H'].apply(lambda x: TextBlob(x)) 
...