Использование некоторого регулярного выражения и извлечения строки здесь:
m=df.actual_pattern.str.extract('(?P<cut_pattern1>.{,4})(?P<cut_pattern2>.*)').replace('',0)
cut_pattern1 cut_pattern2
0 1001 01
1 1010 1
2 1010 101
3 101 0
Затем выполните:
m.assign(binary_cut2=m.cut_pattern2.str.contains('1',na=False).astype(int))
cut_pattern1 cut_pattern2 binary_cut2
0 1001 01 1
1 1010 1 1
2 1010 101 1
3 101 0 0
Наконец, согласуйте это с оригинальным df:
m=df.actual_pattern.str.extract('(?P<cut_pattern1>.{,4})(?P<cut_pattern2>.*)').replace('',0)
m=m.assign(binary_cut2=m.cut_pattern2.str.contains('1',na=False).astype(int))
pd.concat([df,m],axis=1)
Id actual_pattern cut_pattern1 cut_pattern2 binary_cut2
0 1 100101 1001 01 1
1 2 10101 1010 1 1
2 3 1010101 1010 101 1
3 4 101 101 0 0