【问题标题】:Creating a new column and assigning it a value, based on an if condition根据 if 条件创建一个新列并为其分配一个值
【发布时间】:2018-09-28 00:17:00
【问题描述】:

我有一个数据框:

我想遍历它以检查它是否是 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

输出是:

和:

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

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

谢谢。

【问题讨论】:

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


    【解决方案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
    

    输出是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 2020-06-02
      相关资源
      最近更新 更多