Соответствие Regex было бы очень нечитаемым и плохим решением.
В вашем случае до любой даты есть ключевое слово «on», которое можно использовать, поэтому оно работает здесь до тех пор, пока в выражениях даты нет пробелов (их добавление удалит все символы после датытакже), но может заменить и другие выражения, такие как on 1234
или on !@$#
:
df[0].str.replace('on\s+[\W\d]+', '')
Таким образом, вывод:
0 1
0 Thanks $.728.98 in nyc 1
1 7812
2 Rs.999.98 in shop 1872 mumbai 8574
3 INR.999.98 in shop 1872 mumbai 79821
4 Thanks $.4728.98 in nyc sat 11:09:35 7818
Другое решение без Regex - удалить всепосле ключевого слова "on" будет:
df[0] = df[0].apply(lambda x: x.split("on")[0])
И результат:
0 1
0 Thanks $.728.98 in nyc 1
1 7812
2 Rs.999.98 in shop 1872 mumbai 8574
3 INR.999.98 in shop 1872 mumbai 79821
4 Thanks $.4728.98 in nyc 7818