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

时间:2018-04-17 21:59:07

标签: for-loop if-statement dataframe assignment-operator

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

我想迭代它以检查它是否是NLTK支持的引用中的单词。在if语句中,我想创建一个名为' bool'的新列。并根据它指定真或假参考是好还是坏。我写了下面的代码,由于某种原因它会返回所有的谬误,即使它应该是一个混合。这是代码:

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

第一个输出很好。但是,第二个输出应该有一个" True"在列中的每隔一行中,布尔'像这样: enter image description here

我不会'理解为什么我的代码无法完成此任务。

感谢。

1 个答案:

答案 0 :(得分:0)

哇,这需要一段时间,但现在是:

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

基本上,我需要在循环外创建一个空列表,然后通过每次迭代追加测试结果。然后,当循环结束时,我将新列设置为等于填充列表的内容。