Если хотите установить строки 0
и 1
:
df['label'] = np.where(dt - df['time'] < a, '1','0')
Или альтернативно @Dark:
df['label'] = (dt - df['time'] < a).astype(int).astype(str)
print (df)
datetime time label
0 2018/02/19 16:00 2018-02-19 16:00:00 0
1 2018/02/19 17:00 2018-02-19 17:00:00 0
2 2018/02/19 18:00 2018-02-19 18:00:00 1
3 2018/02/19 19:00 2018-02-19 19:00:00 1
print (type(df.loc[0, 'label']))
<class 'str'>
Если хотите установить целые числа 0
и 1
:
df['label'] = (dt - df['time'] < a).astype(int)
Альтернатива:
df['label'] = np.where(dt - df['time'] < a, 1,0)
print (df)
datetime time label
0 2018/02/19 16:00 2018-02-19 16:00:00 0
1 2018/02/19 17:00 2018-02-19 17:00:00 0
2 2018/02/19 18:00 2018-02-19 18:00:00 1
3 2018/02/19 19:00 2018-02-19 19:00:00 1
print (type(df.loc[0, 'label']))
<class 'numpy.int32'>
Можно ли как-нибудь это исправить?
Да, нужно изменить df
на c
для работы со скалярами:
def label(c):
if dt - c['time'] < a:
return '1'
else:
return '0'