在 str.findall 之后将函数应用于 pandas 数据框列

Applying function to pandas dataframe column after str.findall

我有这样一个包含两列的数据框 df

Col1 Col2
'abc-def-ghi' 1
'abc-opq-rst' 2

我创建了一个新列 Col3,如下所示:

df['Col3'] = df['Col1'].str.findall('abc', flags=re.IGNORECASE) 

然后得到了这样一个dataframe:

Col1 Col2 Col3
'abc-def-ghi' 1 [abc]
'abc-opq-rst' 2 [abc]

我现在想做的是创建一个新列 Col4 如果 Col3 包含 'abc' 则我得到一个列,否则为零。

我试着用一个函数来做到这一点:

def f(row):
    if row['Col3'] == '[abc]':
        val = 1
    else:
        val = 0
    return val

并将其应用于我的 pandas 数据框:

df['Col4'] = df.apply(f, axis=1)

但我只得到 0,也在包含 'abc' 的列中。我认为我的 if 语句有问题。 我该如何解决?

随心所欲

df['Col4'] = df.Col3.astype(bool).astype(int)