Mam ramkę danych z tokenami jak poniżej i chcę dopasować klucze ze słownika i uzyskać odpowiedni klucz i wartość.
Ramka danych:
A B
1 ['i','like','apples', 'banana' ,'lot','however','do','not','eat','them','but' , 'sandwich' , 'also' , 'good']
2 ['avengers','series','something','like','most','annabelle','movies' , 'cannot' ,'watch' , 'night' , 'time']
3 ['virat kohli','batsmen','world','like','most','federer','nadal' ,'tennis']
Mam słownik taki jak poniżej:
key value
apple fruit
banana fruit
grapes fruit
sandwich junkfood
noodles junkfood
avengers action
deadpool action
annabelle horror
virat kohli cricket
federer tennis
nadal tennis
timo ball table tennis
Chcę dopasować wszystkie tokeny wiersza z kluczami słownika i uzyskać dopasowane klucze i wartości, jak poniżej.
Wynik:
A B C
1 [fruit , junk food] ['apple' , 'banana' , 'sandwich']
2 ['action' , 'horror'] ['avengers' , 'annabelle']
3 ['cricket' , 'tennis'] ['virat kohli' ,'nadal' , 'federer']
1 odpowiedź
Możesz użyć pandas.DataFrame.apply a> wraz ze zrozumieniem listy,
#if 'df' is your data frame & 'dct_' is your dictionary
df['C'] = df['B'].apply(lambda lst: [item for item in lst if item in dct_.keys()])
df['D'] = df['B'].apply(lambda lst: [dct_.get(item) for item in lst if item in dct_.keys()])
A B C D
0 1 [i, like, apples, banana,...] [ banana, sandwich] [fruit, junkfood]
1 2 [avengers, series, something,...] [avengers, annabelle] [action, horror]
2 3 [virat kohli, batsmen,...] [virat kohli, federer, nadal] [cricket, tennis, tennis]
set()
, aby uzyskać tylko unikalne wartości, jeśli chcesz zwrócić listę, użyj list(set())
tj. lambda lst: set([dct_.get(item) for item in lst if item in dct_.keys()])
list(set())
zamiast lambda lst: list(set([dct_.get(item) for item in lst if item in dct_.keys()]))
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.