Это зависит от контекста. Для контента это & lt; и & amp ;, и]]> (хотя строка из 3 вместо одного символа). Для значений атрибутов это & lt; и & amp; и «и». Для CDATA это]]>.
Неэффективно, но работает
df.apply(lambda x : x.str.split('xy').str[0]).replace('',0)
Out[386]:
col1 col2 col3
0 1 123 pyr
1 3 hcv P
2 0 R T
3 5 453 Z
4 2 l Q
Вы можете использовать заменить дважды:
result = df.replace('xy.*', '', regex=True).replace('', 0)
print(result)
Выход
col1 col2 col3
0 1 123 pyr
1 3 hcv P
2 0 R T
3 5 453 Z
4 2 l Q