如何在Python中将Series字符串与另一个字符串进行比较

时间:2019-03-12 16:58:08

标签: python string comparison

我正在尝试将Series中的字符串与Python中的字符串进行比较。 在这里似乎没问题-我得到对与错的结果:

domains_types['subtype'].astype(str) == 'Default'

对于文件: print(domains_types)

但是当我尝试在“ if”中使用它时,出现一些问题:ValueError:Series的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

if domains_types['subtype'].astype(str) == 'Default':
    domains_types['Category'] = 'e-commerce'
else:
    domains_types['Category'] = 'other'

我是Python的新手,请您解释一下这里存在的问题以及如何解决该问题?

我想根据“ sybtype”添加带有“类别”的新列 result I want, here there is only "other" category so far

1 个答案:

答案 0 :(得分:0)

def cat(val):
    if val == 'Default':
        return('e-commerce')
    else:
        return('other')

df['Category'] = df.apply(lambda x: cat(x['Subtype']), axis=1)

这应该返回“其他”或“电子商务”,具体取决于“子类型”列中每个值的值。上面说明了对整个序列进行等价检查的问题。

或者,如果您想使用“常规” for循环,则可以对数据框进行迭代,例如:

newcol = []

for index, row in df.iterrows():
    if row.Subtype == 'Default':
        newcol.append('e-commerce')
    else:
        newcol.append('other')

df['Category'] = newcol