Check if string in one column is contained in string of another column in the same row

pandas, python

Solution

You need `apply` with `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

Another solution with `list comprehension` is faster, but there has to be no `NaN`s:

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

Problem

I have a dataframe like this: ``` RecID| A |B ---------------- 1 |a | abc 2 |b | cba 3 |c | bca 4 |d | bac 5 |e | abc ``` I want to create another column, C, out of A and B such that for the same row, if the string in column A is contained in the string of column B, then C = True and if not then C = False. The example output I am looking for is this: ``` RecID| A |B |C -------------------- 1 |a | abc |True 2 |b | cba |True 3 |c | bca |True 4 |d | bac |False 5 |e | abc |False ``` Is there a way to do this in pandas quickly and without using a loop?

Original source