Доброе утро.
Моя проблема заключается в следующем: у меня есть файл данных pandas со столбцом с именем 'fecha', в котором хранятся объекты даты, и список кортежей, в котором хранятся начальное и конечное время. Показать примеры ниже:
df =
fecha
0 2018-10-01
1 2019-01-12
2 2018-12-25
list_ranges = [(datetime.datetime(2018, 10, 1, 0, 0),
datetime.datetime(2018, 10, 15, 0, 0)),
(datetime.datetime(2018, 10, 16, 0, 0),
datetime.datetime(2018, 10, 31, 0, 0)),
(datetime.datetime(2018, 11, 1, 0, 0), datetime.datetime(2018, 11, 15, 0, 0)),
(datetime.datetime(2018, 11, 16, 0, 0),
datetime.datetime(2018, 11, 30, 0, 0)),
(datetime.datetime(2018, 12, 1, 0, 0), datetime.datetime(2018, 12, 15, 0, 0)),
(datetime.datetime(2018, 12, 16, 0, 0),
datetime.datetime(2018, 12, 31, 0, 0)),
(datetime.datetime(2019, 1, 1, 0, 0), datetime.datetime(2019, 1, 15, 0, 0))]
и я хочу получить позицию диапазона, в котором каждая дата находится в списке. Результат, который я ищу:
df =
result
0 1
1 7
2 6
В настоящее время я делаю это:
df.fecha = df.fecha.apply(lambda x: select_quincena(x, quincenas))
def select_quincena(fecha, quincenas):
fecha = datetime.datetime.combine(fecha, datetime.datetime.min.time())
num = 0
for e in quincenas:
num += 1
if fecha >= e[0] and fecha <= e[1]:
return num
Работает нормально, но я уверен, что есть лучший и более простой способ сделать это.
Заранее большое спасибо.