首页 > 解决方案 > 在 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根据以下标准创建一个新列:</p>

如果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

要检查ais inbbis in a,我们可以使用:

df.apply(lambda x: x.a in x.b, axis=1)
df.apply(lambda x: x.b in x.a, axis=1)

标签: python-3.xpandasstringdataframe

解决方案


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

推荐阅读