Python Pandas:检查同一列中另一列的字符串中是否包含一个列中的字符串


问题内容

我有一个这样的数据框:

RecID| A  |B
----------------
1    |a   | abc 
2    |b   | cba 
3    |c   | bca
4    |d   | bac 
5    |e   | abc

并要在A和B之外创建另一个列C,以便对于同一行,如果列A的字符串包含在列B的字符串中,则C = True,否则C = False。

我正在寻找的示例输出是这样的:

RecID| A  |B    |C 
--------------------
1    |a   | abc |True
2    |b   | cba |True
3    |c   | bca |True
4    |d   | bac |False
5    |e   | abc |False

有没有办法在不使用循环的情况下在熊猫中快速执行此操作?谢谢


问题答案:

您需要apply使用in

df['C'] = df.apply(lambda x: x.A in x.B, axis=1)
print (df)
   RecID  A    B      C
0      1  a  abc   True
1      2  b  cba   True
2      3  c  bca   True
3      4  d  bac  False
4      5  e  abc  False

的另一个解决方案list comprehension速度更快,但必须没有NaNs:

df['C'] = [x[0] in x[1] for x in zip(df['A'], df['B'])]
print (df)
   RecID  A    B      C
0      1  a  abc   True
1      2  b  cba   True
2      3  c  bca   True
3      4  d  bac  False
4      5  e  abc  False