熊猫:按日期划分DF的最快方式

时间:2017-08-31 21:02:34

标签: python python-2.7 pandas

我有一个效率问题。我写了一些代码来分析一份报告,该报告包含超过70,000条记录和超过400多个独特的组织,以允许我的主管输入他们感兴趣的年/月/日,并让它弹出信息。

我的代码的开头是:

import pandas as pd
import numpy as np
import datetime
main_data = pd.read_excel("UpdatedData.xlsx", encoding= 'utf8')

#column names from DF
epi_expose = "EpitheliumExposureSeverity"
sloughing = "EpitheliumSloughingPercentageSurface"
organization = "OrgName"
region = "Region"
date = "DeathOn"

#list storage of definitions
sl_list = ["",'None','Mild','Mild to Moderate']
epi_list= ['Moderate','Moderate to Severe','Severe']

#Create DF with four columns
df = main_data[[region, organization, epi_expose, sloughing, date]]

#filter it down to months
starting_date = datetime.date(2017,2,1)
ending_date = datetime.date(2017,2,28)

df = df[(df[date] > starting_date) & (df[date] < ending_date)]

然后我在下面执行条件过滤以按地区和组织获取计数。它有效,但速度很慢。是否有更有效的方法来查询我的DF并设置一个只有它应该介于两者之间的日期的DF?或者这是否是最有效的方式而不改变我正在使用的数据库的设置方式?

我可以提供更多的代码,但是如果我在导出到excel之前按月过滤掉代码,代码会在几秒钟内运行,所以除了获取正确的日期字段之外我并不关心它的速度。

谢谢!

0 个答案:

没有答案