I have a dataframe. I would like to test whether, (C), on each row, the number in column (B) is in the string, column (A).
df = pd.DataFrame({'A': ["me 123", "me-123", "1234", "me 12", "123 me", "6 you 123-me"],
'B': [123, 123, 123, 123, 6, 123]})
I can almost do that using extract
df['C'] = df.A.str.extract('(\d+)', expand=False).astype(float).eq(df.B,0).astype(int)
A B C
0 me 123 123 1
1 me-123 123 1
2 1234 123 0
3 me 12 123 0
4 123 me 6 0
5 6 you 123-me 123 0
However on the bottom row it is not seeing the number 123 becasue of the number 6. I would like to get
A B C
0 me 123 123 1
1 me-123 123 1
2 1234 123 0
3 me 12 123 0
4 123 me 6 0
5 6 you 123-me 123 1
Using
findall
Use
Series.str.extractall
for get all numeric from column, reshape bySeries.unstack
, check values and addDataFrame.any
for test at least oneTrue
per row:re.split
Use 'One or more not-digits' as a pattern