根据 if 条件创建新列并为其赋值

Creating a new column and assigning it a value, based on an if condition

提问人:spacedustpi 提问时间:4/18/2018 更新时间:4/19/2018 访问量:45

问:

我有一个数据帧:enter image description here

我想遍历它以检查它是否是 NLTK 支持的引用中的单词。在 if 语句中,我想创建一个名为“bool”的新列,并根据引用的好坏分配 true 或 false。我写了下面的代码,出于某种原因,它返回了所有错误,即使它应该是一个混合。代码如下:

from nltk.corpus import wordnet

for each in df['word']:
    if not wordnet.synsets(each):
        df['new'] = False
        print('Not an English Word')       
    else:
        df['new'] = True
        print('English Word')  

df

输出为:enter image description here

和:enter image description here

第一个输出很好。但是,第二个输出应该在“bool”列的每隔一行中有一个“True”,如下所示:enter image description here

我不明白为什么我的代码无法做到这一点。

谢谢。

for 循环 if 语句 数据帧 赋值运算符

评论


答:

0赞 spacedustpi 4/18/2018 #1

哇,这花了一段时间,但这里是:

from nltk.corpus import wordnet

real_wds = []

for each in df['word']:
    if not wordnet.synsets(each):
        real_wds.append(False)
    else:
        real_wds.append(True)
df['bool'] = real_wds

df

输出为:enter image description here

从本质上讲,我需要在循环外创建一个空列表,然后在每次迭代中附加测试结果。然后,当循环完成时,我将新列设置为等于填充列表的内容。