需要根据PYTHIN中的特定条件创建一个新变量:

时间:2018-02-28 07:34:04

标签: python python-3.x pandas dataframe

我使用下面的代码

for i in test.construction:
     if i.find("Wood"):
         test["Category"]="tree"

print (test[["construction", "Category"]])

输出:               建筑类别

            Masonry     tree
            Masonry     tree
               Wood     tree
               Wood     tree

我使用的是find而不是'==',因为它可能在Construction列中包含多个单词/字符串。 它每次都给“树”。 当建筑=“砌体”

时,我想要Category =“Mason”

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

如果需要tree并且条件失败mason,则numpy.where创建条件似乎需要contains

test['Category'] = np.where(test['construction'].str.contains('Wood'), 'tree', 'mason')
print (test)
  construction Category
0      Masonry    mason
1      Masonry    mason
2         Wood     tree
3         Wood     tree

或者,如果可能有很多条件,请使用自定义函数with in for test substrings:

def f(x):
    if 'Wood' in x:
        return 'tree'
    elif 'Masonry' in x:
        return 'mason'
    else:
        return x

test['Category'] = test['construction'].apply(f)