У меня есть DataFrame в Pandas со столбцом 'register'
, который может быть либо 0, либо некоторым положительным числом, я хочу создать новый столбец 'Working'
, равный 1, если эта строка в 'register'
или любой из 7 предыдущих не 0. Я пытался их перебирать, но поскольку это большой DataFrame, он работает очень медленно. Это мой код:
df['working'] = 0
for i in range(len(df['register'])):
if df['register'][i] != 0 or \
(i>1 and df['register'][i-1] != 0) or\
(i>2 and df['register'][i-2] != 0) or\
(i>3 and df['register'][i-3] != 0) or\
(i>4 and df['register'][i-4] != 0) or\
(i>5 and df['register'][i-5] != 0) or\
(i>6 and df['register'][i-6] != 0):
df['working'][i] = 1
else:
df['working'][i] = 0
Я также пытался использовать this и выглядел так:
df['working']=df['register'].apply(lambda x: 1 if x!=0 or x.shift(1)!=0 or x.shift(2)!=0 or x.shift(3)!=0 or x.shift(4)!=0 or x.shift(5)!=0 or x.shift(6)!=0 else 0)
Но я получил:
AttributeError: у объекта 'float' нет атрибута 'shift'
Есть ли лучший способ сделать это, используя pandas?
Заранее спасибо.