У меня есть программа, в которой мне нужно отсортировать большой набор данных.
Этот набор данных содержит следующие столбцы:
Серийные сериалы
Info_Date
Login_Date
SNXXXXXX
12.10.2023 12:50
14.12.2023 14: 30
SNXXXXX1
29.02.2024 13:40
02.10.2024 10:00
SNXXXXX4
Неверная дата
Мне нужно проверить, содержит ли Info_Date или Login_date строку «Недопустимая дата», или проверить, содержит ли >Info_Date старше трех месяцев. Или если Login_Date старше тридцати дней.
В первом случае я использовал numpy.where( ) и у меня не возникло проблем, поскольку данные уже были в строковом формате, но в других случаях у меня возникала большая проблема, поскольку каждый элемент NumpyArray является string, его нельзя сопоставить со значением даты и времени внутри numpy.where().
Вот код, который я использовал в первом сценарии противостояния:
Код: Выделить всё
import pandas as pd
from datetime import datetime, timedelta
import time
import numpy as np
source_data = pd.read_excel("./documents/data.xlsx")
three_months_ago = datetime.now() - timedelta(days=90)
thirty_days_ago = datetime.now() - timedelta(days=30)
#Get the values that are "Invalid date"
print(source_data.iloc[
np.where(source_data["Login_Date"].values == "Invalid date")])
Код: Выделить всё
format = str("%d/%m/%Y %H:%M")
print(np.where(datetime.strptime(source_data["Login_Date"], format) < thirty_days_ago))
Сериалы
Info_Date
Login_Date
SNXXXXX1
29/02/ 2024 13:40
02.10.2024 10:00
/дел>
Подробнее здесь: https://stackoverflow.com/questions/781 ... e-variable