Выбор нескольких строк в Pandas df на основе массива datetime64 [ns] - PullRequest
0 голосов
/ 25 сентября 2018

Время головной боли.

У меня есть фрейм данных, где важный столбец имеет тип datetime64 [ns].Имеется> 1500000 строк, столбец datetime содержит около 3000 уникальных «времен начала» (прогонов единицы оборудования).

После выполнения некоторых groupby с и анализа данных у меня было идентифицировано ~ 30 прогонов интереса (идентифицируемых по их времени выполнения / start_time). analysis_df.start_time.unique() создает массив данных с указанным временем.

Я хотел бы использовать для извлечения необработанных данных для этих ~ 30 запусков, и надеялся использовать isin а-ля Фильтровать строки данных, если значение в столбце находится в заданном списке значений, однако я не справился с Функция ISIN не работает для дат , и я немного застрял.

Я смотрел на преобразование форматов: Преобразование междуdatetime, Timestamp и datetime64 но тот факт, что Уэс называет этот аспект «Адом», не вселяет в меня надежду!https://stackoverflow.com/a/13753918/2658194

Любая помощь в достижении этого «фильтра» будет принята с благодарностью - если у кого-то есть другой (лучший!) Подход, я был бы рад изменить.

Спасибо

1 Ответ

0 голосов
/ 25 сентября 2018

Функция ISIN не работает для дат

Это не так.Вопрос, который вы процитировали, 5 лет.Вы можете использовать список, серию или массив.Вот демонстрация, протестированная на Pandas 0.19.2.

df = pd.DataFrame({'A': pd.to_datetime(['2018-01-01', '2018-11-30', '2018-12-24'])})

L = ['2018-01-01', '2018-12-24']
S = pd.to_datetime(L)
A = S.values

res1 = df[df['A'].isin(L)]
res2 = df[df['A'].isin(S)]
res3 = df[df['A'].isin(A)]

assert (res1.values == res2.values).all()
assert (res1.values == res3.values).all()

print(res1)

#            A
# 0 2018-01-01
# 2 2018-12-24
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...