Как создать pandas dataframe из токенов слов из существующего столбца строк dataframe? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть pandas dataframe df в форме:

df = pd.DataFrame.from_dict({'ID':[1,2,3], \
'Strings':['Hello, how are you?', 'Nice to meet you!', 'My name is John.']})

Я хочу разметить столбец Strings и создать новый фрейм данных new_df :

Sentence    Word
   0        Hello
   0        ,
   0        how
   0        are
   0        you
   0        ?
   1        Nice
   1        to
   1        meet
   1        you
   1        .
   2        My
   2        name
   2        is
   2        John
   2        .

Я знаю, что для токенизации я могу использовать nltk.word_tokenize () для преобразования строки в df , но как мне получитьс этой точки до new_df эффективным способом?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

После nltk проблема стала unnesting

df.Strings=df.Strings.map(nltk.word_tokenize).tolist()

unnesting(df,['Strings'])
Out[22]: 
  Strings  ID
0   Hello   1
0       ,   1
0     how   1
0     are   1
0     you   1
0       ?   1
1    Nice   2
1      to   2
1    meet   2
1     you   2
1       !   2
2      My   3
2    name   3
2      is   3
2    John   3
2       .   3
0 голосов
/ 21 февраля 2019

Вы можете сделать это с помощью map и stack:

import nltk
pd.DataFrame(df.Strings.map(nltk.word_tokenize).tolist(), index=df.ID).stack()

Чтобы очистить индекс, используйте reset_index.

(pd.DataFrame(df.Strings.map(nltk.word_tokenize).tolist(), index=df.ID)
   .stack()
   .reset_index(level=1, drop=True)
   .reset_index(name='Word'))

    ID   Word
0    1  Hello
1    1      ,
2    1    how
3    1    are
4    1    you
5    1      ?
6    2   Nice
7    2     to
8    2   meet
9    2    you
10   2      !
11   3     My
12   3   name
13   3     is
14   3   John
15   3      .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...