Pandas筛选上月数据时日期识别异常,部分月份被误判为日
日期月份识别错误导致数据筛选遗漏
筛选上月数据记录时,执行emp_df = emp_df[emp_df['Date'].dt.month == (currentMonth-1)]后发现部分记录被遗漏,系统错误地将这些记录的日期识别为月份。
相关代码如下:
from datetime import datetime, date import pandas as pd import numpy as np cholareport = pd.read_excel("D:/Automations/HealthCheck and Audit Trail/report.xlsx") uniqueemp = set(cholareport['Email']) cholareport['Date'] = pd.to_datetime(cholareport['Date']) uniqueemp = set(cholareport['Email']) daystoignore = ['Holiday_COE', 'Leave_COE'] # datedfforemp = pd.DataFrame(columns=uniqueemp) cholareport['Date'] = cholareport['Date'].apply(lambda x: pd.to_datetime(x).strftime('%d/%m/%Y')) cholareport["Date"] = pd.to_datetime(cholareport["Date"], utc=True) for emp in uniqueemp: emp_df = cholareport[cholareport['Email'].isin([emp])] emp_df = emp_df[~emp_df['Task: Task Name'].isin(daystoignore)] # s1 = pd.to_datetime(emp_df['Date']).dt.strftime('%Y-%m') # s2 = (pd.to_datetime('today').strftime('%Y-%m') -pd.DateOffset(months=1)).strftime('%Y-%m') # emp_df = emp_df[s1 == s2] currentMonth = datetime.now().month # print(currentMonth) # print(emp_df['Date']) emp_df['Date'] = pd.to_datetime(emp_df['Date']).dt.strftime("%dd-%mm-%YYYY") format_data = "%dd-%mm-%YYYY" empdfdate = [] for i in emp_df['Date']: empdfdate.append(datetime.strptime(i,format_data)) print(empdfdate) emp_df['Date'] = empdfdate for i in emp_df['Date']: print(i.month, i.day) # emp_df['Date'] = pd.to_datetime(emp_df['Date']).dt.strftime('%Y-%m') emp_df = emp_df[emp_df['Date'].dt.month == (currentMonth-1)] for i in emp_df['Date']: print(i.month, i.day)
实际输出:
6 10 7 10 10 10 11 10 12 10 10 13 10 14
预期输出:
6 10 7 10 10 10 11 10 12 10 13 10 14 10
内容的提问来源于stack exchange,提问作者Himanshu Joshi
相关产品推荐
相关产品推荐

