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

发布于 2021-01-29 16:28:46

我有一个这样的数据框:

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

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

关注者
0
被浏览
149
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您需要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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看