Прежде всего вам необходимо проверить, имеет ли ваш столбец date
формат datetime
.
Вы можете проверить это с помощью df.dtypes
.Если у него нет формата даты (datetime64
), вы должны преобразовать его в дату и время с помощью:
df['date'] = pd.to_datetime(df.date, format='%Y%m%d', errors='ignore')
Обратите внимание, что аргумент errors='ignore'
имеет свои риски, поэтому его необязательно.
Теперь, чтобы создать вычисляемое поле, вы можете сделать это:
# define function to calculate periods based on date
def calculate_period(row):
if row['date'] > start_date1 & row['date'] < end_date1:
return "0"
elif row['date'] > start_date2 & row['date'] < end_date2:
return "1"
elif row['date'] > start_date3 & row['date'] < end_date3:
return "2"
else:
return "unknown"
# apply function to create the new column
df['period'] = df.apply(calculate_period, axis=1)
Если вам нужно больше значений period
, вы можете расширить операторы elif
так, как вам нравится.
Так как не хватает информации о ваших данных.Я предположил, что start_date1
и end_date1
- переменные, которые вы определили.
Если это тоже столбцы.Функция будет выглядеть так:
# define function to calculate periods based on date
def calculate_period(row):
if row['date'] > row['start_date1'] & row['date'] < row['end_date1']:
return "0"
elif row['date'] > row['start_date2'] & row['date'] < row['end_date2']:
return "1"
elif row['date'] > row['start_date3'] & row['date'] < row['end_date3']:
return "2"
else:
return "unknown"
# apply function to create the new column
df['period'] = df.apply(calculate_period, axis=1)
Удачи.