在Python中检查两个字符串列是否相互包含

ahb*_*bon 0 string dataframe python-3.x pandas

给定一个小数据集,如下所示:

   id       a       b
0   1     lol   lolec
1   2   rambo     ram
2   3      ki     pio
3   4    iloc     loc
4   5   strip  rstrip
5   6  lambda  lambda
Run Code Online (Sandbox Code Playgroud)

我想c根据以下标准创建一个新列?

如果a等于或子串b或反之亦然,则创建一个c具有值的新列1,否则将其保留为0.

我怎么能在 Pandas 或 Python 中做到这一点?

预期结果:

   id       a       b  c
0   1     lol   lolec  1
1   2   rambo     ram  1
2   3      ki     pio  0
3   4    iloc     loc  1
4   5   strip  rstrip  1
5   6  lambda  lambda  1
Run Code Online (Sandbox Code Playgroud)

要检查a是 inb还是bin a,我们可以使用:

df.apply(lambda x: x.a in x.b, axis=1)
df.apply(lambda x: x.b in x.a, axis=1)
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 6

使用zip和列表理解:

df['c'] = [int(a in b or b in a) for a, b in zip(df.a, df.b)]

df
   id       a       b  c
0   1     lol   lolec  1
1   2   rambo     ram  1
2   3      ki     pio  0
3   4    iloc     loc  1
4   5   strip  rstrip  1
5   6  lambda  lambda  1
Run Code Online (Sandbox Code Playgroud)

或者使用apply,只需将两个条件与or:

df['c'] = df.apply(lambda r: int(r.a in r.b or r.b in r.a), axis=1)
Run Code Online (Sandbox Code Playgroud)