pd.to_datetime
, , а не модуль datetime
Сначала преобразуйте свои серии в панд datetime
:
df['fecha'] = pd.to_datetime(df['fecha'])
[1121 ] Используйте pd.cut
для группировки категорий
Это проблема объединения. Вы можете использовать pd.cut
для векторизованного решения:
import numpy as np
from operator import itemgetter
dates = pd.to_datetime([list_ranges[0][0], *map(itemgetter(1), list_ranges)]).values
labels = np.arange(1, len(dates))
df['result'] = pd.cut(df['fecha'].values, bins=dates, labels=labels, include_lowest=True)
print(df)
fecha result
0 2018-10-01 1
1 2019-01-12 7
2 2018-12-25 6
Связанный: Фильтрация и создание столбца на основе столбца даты
В этом случае также возможен двоичный поиск для поиска требуемых точек вставки. Это эффективно реализовано в np.searchsorted
.
df['result'] = np.searchsorted(dates, df['fecha'].values, side='right')
Cannot cast array data
Выше тестировалось на работу с Pandas 0.23.4 / NumPy 1.15.1. Для других версий сравнение типов может быть непоследовательным. В этом случае вы можете конвертировать массивы datetime
в целые числа, заменяя каждое извлечение .values
на .values.astype('datetime64[D]').astype(int)
.