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

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

   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

我想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

要检查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)

回答

使用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

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

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


以上是在Python中检查两个字符串列是否相互包含的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>