我正在清理我的data frameSumcription 中的一个列,并尝试做 3 件事:
删除停用词
import spacy
nlp = spacy.load('en_core_web_sm', parser=False, entity=False)
df['Tokens'] = df.Sumcription.apply(lambda x: nlp(x))
spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS
spacy_stopwords.add('attach')
df['Lema_Token'] = df.Tokens.apply(lambda x: " ".join([token.lemma_ for token in x if token not in spacy_stopwords]))
Run Code Online (Sandbox Code Playgroud)但是,当我打印例如:
df.Lema_Token.iloc[8]
Run Code Online (Sandbox Code Playgroud)
输出中仍然包含单词 attach :
attach poster on the wall because it is cool
为什么它不删除停用词?
我也试过这个:
df['Lema_Token_Test'] = df.Tokens.apply(lambda x: [token.lemma_ for token in x if token not in spacy_stopwords])
Run Code Online (Sandbox Code Playgroud)
但是 strattach仍然出现。
我会尽力解释我的问题。但我是 Pandas 新手,所以请耐心等待。我有一个 Pandas 数据框df:
Random_ID Seq_ID Type Seq Token
0 8 1 User First
1 8 2 Agent Second
2 8 3 User Second
3 8 4 User Second
4 8 5 Agent Second
5 13 1 User First
6 13 2 Agent Second
7 13 3 User Second
8 13 4 Agent Second
9 13 5 User Second
10 13 6 Agent Second
11 13 7 User Second
12 13 8 Agent Second
13 13 9 …Run Code Online (Sandbox Code Playgroud) 我有一个 Pandas Dataframe,其列值作为字符串列表。每个列表可以有一个或多个字符串。对于包含多个单词的字符串,我想将它们拆分为单独的单词,以便每个列表仅包含单独的单词。在下面的数据框中,只有sent_tags列具有包含可变长度字符串的列表。
数据框:
import pandas as pd
pd.set_option('display.max_colwidth', -1)
df = pd.DataFrame({"fruit_tags": [["'apples'", "'oranges'", "'pears'"], ["'melons'", "'peaches'", "'kiwis'"]], "sent_tags":[["'apples'", "'sweeter than oranges'", "'pears sweeter than apples'"], ["'melons'", "'sweeter than peaches'", "'kiwis sweeter than melons'"]]})
print(df)
fruit_tags sent_tags
0 ['apples', 'oranges', 'pears'] ['apples', 'sweeter than oranges', 'pears sweeter than apples']
1 ['melons', 'peaches', 'kiwis'] ['melons', 'sweeter than peaches', 'kiwis sweeter than melons']
Run Code Online (Sandbox Code Playgroud)
我的尝试:
我决定使用word_tokenizeNLTK 库将这些字符串分解为单独的单词。我确实获得了列表中特定选择的标记化单词,但无法将它们组合到每行的每个列表中:
from nltk.tokenize import word_tokenize
df['sent_tags'].str[1].str.strip("'").apply(lambda x:word_tokenize(x.lower()))
#Output
0 [sweeter, …Run Code Online (Sandbox Code Playgroud) 我试图从我的字典中获取最大值,该字典有一个列表作为值,然后返回键和值。
我的字典看起来像这样:
d = {'Miami': [1, 12, 7, 12], 'New York': [21, 12, 1, 8]}
Run Code Online (Sandbox Code Playgroud)
我想得到答案:
New York 21
Run Code Online (Sandbox Code Playgroud)
有什么建议么?