我有一个数据帧df
,看起来像这样
index Posts clean_text
0 Hi I am fine. [Hi, I, am, fine]
1 You are a piece of shit. [You, are, a, piece, of, shit]
.
.
.
我有一个名为corpus
的列表,其中有3000个脏话
我想遍历clean_text
列,通过检查所有行的条件,将一个新行result
添加到df
。条件是:
如果clean_text
列的任何一行中的任何一个单词出现在corpus
中,则result
列将具有字符串Irrelevant
,否则Relevant
示例:如果列表[Hi, I, am, fine]
中的任何单词出现在corpus
中,则列result
将有Irrelevant
,否则relevant
。由于此列表没有任何脏话,因此输出应为relevant
所需输出为:
index Posts clean_text result
0 Hi I am fine. [Hi, I, am, fine] Relevant
1 You are a piece of shit. [You, are, a, piece, of, shit] Irrelevant
.
.
.
我想用lambda函数来做这个。到目前为止,我已经这样做了-
df['result'] = df['clean_text'].map(lambda x: ["Relevant" for w in x if w not in corpus])
首先,我无法在这里编写else
部分,其次,它显示了如下所示的不良输出
index Posts clean_text result
0 Hi I am fine. [Hi, I, am, fine] [Relevant, Relevant, Relevant, Relevant]
1 You are a piece of shit. [You, are, a, piece, of, shit] [Relevant, Relevant, Relevant,...]
.
.
.
我也尝试过像这样编写一个“for”循环,但这需要很多时间:
for i in range(df.shape[0]):
for word in df.loc[i]['clean_text']:
if word in corpus:
df['result'] = "Irrelevant"
#break
else:
#continue
df['result'] = "Relevant"
请帮助我使用lambda函数获得所需的输出
使用
corpus = set(corpus)
然后你可以用
请注意,您使用的是
lambda
实际上并不相关。你本可以这样做:并且做:
这不会影响性能
lambda
表达式不会创建任何特殊的内容,而且您永远不必使用它相关问题 更多 >
编程相关推荐