Почему мой код на python / pandas неправильно фильтрует дату завершения? - PullRequest
0 голосов
/ 13 июня 2018

Мой скрипт на python импортирует файл xlsx, удаляет некоторые идентификаторы, а затем должен отфильтровать даты завершения на основе моей переменной "term_date".Поскольку сегодня 12 июня, я не ожидал бы, что какие-либо даты завершения после 14 марта 2018 года будут в моем выводе.Тем не менее, я вижу февральские даты окончания.Есть идеи почему?

import pandas as pd
from datetime import datetime, timedelta

TODAY = datetime.today().strftime("%d%m%Y")
term_date = (datetime.today() - timedelta(days=90))
#term_date = (pd.to_datetime('today') - pd.Timedelta(days=90))
remove_id = ['381998','201439']

df = pd.read_excel('Details.xlsx')
df = df[~df['Employee ID'].isin(remove_id)]
df['Termination Date'] = df['Termination Date'].astype(str)

df['Termination Date'] = df['Termination Date'].str.replace('nan', '1/1/2050')
df['Termination Date'] = pd.to_datetime(df['Termination Date'])
df['Hire Date'] = pd.to_datetime(df['Hire Date'])
df['Home Address Line 1'] = df['Home Address Line 1'].str.replace(',', '')
df['Home Address Line 2'] = df['Home Address Line 2'].str.replace(',', '')
df['Shipping Address Line 1'] = df['Shipping Address Line 1'].str.replace(',', '')
df['Shipping Address Line 2'] = df['Shipping Address Line 2'].str.replace(',', '')
df2 = df[df['Termination Date'] >= term_date]

df2.to_excel('roster_file2_' + TODAY + '.xlsx')

Пример моего фрейма данных:

Employee ID Termination Date    Hire Date   Home Address Line 1
234254              2/1/2018    1/1/2015    20 Main St
675867              5/2/2018    1/1/2015    10 Elm St
345665              1/1/2050    1/1/2015    1 Chestnut St
974445              1/1/2050    1/1/2015    12 Cherry St
235465             11/3/2017    1/1/2015    9 Lucky St

1 Ответ

0 голосов
/ 13 июня 2018

похоже на проблему с форматом даты и времени.попробуйте передать dayfirst=True при конвертации в дату

df.TerminationDate = pd.to_datetime(df.TerminationDate,dayfirst=True)

df[df.TerminationDate >= term_date]
Out[519]: 
EmployeeID TerminationDate    HireDate   HomeAddress
2      345665      2050-01-01  01/01/2015  1 ChestnutSt
3      974445      2050-01-01  01/01/2015   12 CherrySt
...