【发布时间】:2021-08-16 04:08:35
【问题描述】:
我有一个大约 30,000 行的表,需要从 dummy_df 数据帧中名为 dummy_df 的列中提取非英语单词。我需要将非英语单词放在名为non_english 的相邻列中。一个虚拟数据是这样的:
dummy_df = pandas.DataFrame({'outcome': ["I want to go to church", "I love Matauranga", "Take me to Oranga Tamariki"]})
我的想法是从句子中提取非英语单词,然后在数据帧上迭代该过程。我能够用这段代码准确地从句子中提取非英语单词:
import nltk
nltk.download('words')
from nltk.corpus import words
words = set(nltk.corpus.words.words())
sent = "I love Matauranga"
" ".join(w for w in nltk.wordpunct_tokenize(sent) \
if not w.lower() in words or not w.isalpha())
以上代码的结果是'Matauranga',完全正确。
但是当我尝试使用此代码在数据帧上迭代代码时:
import nltk
nltk.download('words')
from nltk.corpus import words
def no_english(text):
words = set(nltk.corpus.words.words())
" ".join(w for w in nltk.wordpunct_tokenize(text['outcome']) \
if not w.lower() in words or not w.isalpha())
dummy_df['non_english'] = dummy_df.apply(no_english, axis = 1)
print(dummy_df)
我得到了一个不受欢迎的结果,因为 non_english 列具有 none 值而不是所需的非英语单词(见下文):
outcome non_english
0 I want to go to church None
1 I love Matauranga None
2 Take me to Oranga Tamariki None
3 None
相反,期望的结果应该是:
outcome non_english
0 I want to go to church
1 I love Matauranga Matauranga
2 Take me to Oranga Tamariki Oranga Tamariki
需要帮助。谢谢。
【问题讨论】:
标签: python pandas text nlp nltk