Как сопоставить и объединить DataFrame панд со списком? - PullRequest
0 голосов
/ 13 мая 2018

У меня есть простой фрейм данных панды и список, который выглядит как пара

import pandas as pd

frame = pd.DataFrame({'a' : ['the cat is blue', 'the sky is green', 'the dog is black']})

mylist =['cat blue', 'sky green', 'dog black']

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

mylist_1 = ['cat','sky','dog']

Но когда я пытаюсь решить с помощью mylist , кадр данных не совпадает. Вот фрагмент кода, который я использовал.

import pandas as pd

frame = pd.DataFrame({'a' : ['the cat is blue', 'the sky is green', 'the dog is black']})

print(frame)

mylist_1 =['cat', 'sky', 'dog']

import nltk
frame['Data'] = frame['a'].apply(lambda x :  ([i for i in nltk.word_tokenize(x) if i in mylist_1]))

print(frame)

Но как сопоставить my_list с фреймом данных. Пожалуйста, помогите мне в этом вопросе

1 Ответ

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

IIUC, вам не нужно использовать nltk.word_tokenize, вы можете просто использовать split(' ') в понимании списка, используя ту же структуру, которую вы пытались использовать:

frame['data'] = (frame.a.apply(lambda x: [w for i in mylist
                                          for w in i.split(' ')
                                          if w in (x)]))
>>> frame
                  a          data
0   the cat is blue   [cat, blue]
1  the sky is green  [sky, green]
2  the dog is black  [dog, black]

Списокпонимание: [w for i in mylist for w in i.split(' ')] сводит ваш список к ['cat', 'blue', 'sky', 'green', 'dog', 'black']

...