【发布时间】:2018-06-20 22:01:51
【问题描述】:
我正在尝试从从 .csv 读取的以下 DataFrame 中删除停用词。它基本上是一长串二元组及其在洗发水标签数据集中出现的频率。
目标是在“word1”或“word2”列中出现停用词时删除整行。
word1 word2 frequency
0 nicht in 3069
1 wenn sie 2729
2 von kindern 2108
3 die hände 2094
4 darf nicht 2091
5 hände von 2091
6 citric acid 2088
7 kindern gelangen 2082
8 sie einen 2053
9 mit den 2023
10 eine reaktion 1976
然而,到目前为止,当它与来自 nltk 的德语停用词匹配时,我什至没有设法删除仅基于列 'word1' 的行。
我使用的代码基于之前回答的问题here。
import pandas as pd
from nltk.corpus import stopwords
stop = stopwords.words('german')
df = pd.read_table("myfile.csv", sep=";")
df.columns = ["word1","word2","frequency"]
df["word1"] = df["word1"].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop)]))
print(df)
我得到的错误是: AttributeError: 'list' 对象没有属性 'split'
我完全明白,我不理解被调用的函数是错误的。我正在尝试在一边做课程的同时加深对 pandas 和 nltk 的理解,但这并没有真正去任何地方:)
一旦清除 DataFrame 中的停用词,目标就是将其写入新的 CSV。但那是以后的阶段了。
编辑:为了澄清而更改标题
【问题讨论】:
-
我无法重现您的错误。您能否在问题中包含“myfile.csv”的前几行。
-
问题解决了。但是,如果您有兴趣;这是前 100 行的虚拟 CSV 的链接:here
标签: python pandas csv nltk corpus