IIUC с использованием np.where
и //
(делитель)
df['New'] = np.where(df.a1//10==456,1,0)
# np.where((df.a1//10).isin([456,xxx,yyy]),1,0)
df
a1 a2 New
0 4567 k 1
1 4565 k 1
2 4567 k 1
3 6325 p 0
4 4569 k 1
5 4564 k 1
6 4555 k 0
7 9567 k 0
8 9567 h 0
Исправьте ваш код startswith
data['a3'] = 0
data.loc[data['a1'].astype(str).str.startswith('456'), 'a3'] = 1
Почему filter
не работает, так как фильтр фильтрует информационный кадр и не возвращает позицию для назначения, так что это может привести к сбою, и это для index
и columns