Python 根据多个日期条件选择和计算行的最快方法是什么?

Python 根据多个日期条件选择和计算行的最快方法是什么?,python,pandas,performance,numpy,Python,Pandas,Performance,Numpy,我创建了一个函数,用于根据给定的列值(特定的供应商或商店)在计算的时间段内计算已售出商品的数量。 写下面函数的更有效方法是什么 在大型数据集上,多次调用函数非常耗时。我在下面附上预期结果 我在一个示例中使用此数据: df=pd.DataFrame({ “CreatedDate”:[2019-03-0218:03:08.690000', '2019-02-01 21:22:43.109000', '2019-03-09 21:21:44.337000', '2019-04-04 21:45:59

我创建了一个函数,用于根据给定的列值(特定的供应商或商店)在计算的时间段内计算已售出商品的数量。 写下面函数的更有效方法是什么

在大型数据集上,多次调用函数非常耗时。我在下面附上预期结果

我在一个示例中使用此数据:


df=pd.DataFrame({
“CreatedDate”:[2019-03-0218:03:08.690000',
'2019-02-01 21:22:43.109000',
'2019-03-09 21:21:44.337000',
'2019-04-04 21:45:59.988000',
'2019-03-15 18:53:17.683000',
'2019-03-03 00:24:28.003000',
'2019-04-14 22:01:20.759000',
'2019-02-26 19:28:01.800000',
'2019-03-21 21:23:09.629000',
'2019-02-03 00:55:51.756000'], 
'状态':['辞职','出售','交付中',
“出售”、“交付中”、“辞职”,
“卖出”、“卖出”、“卖出”、“卖出”],
“供应商”:
[A',B',C',A',A',A',A',A',A',A',A',B'],
“商店”:
[a'、'a'、'b'、'a'、'a'、'a'、'a'、'a'、'a'、'a'、'a']
#乐趣
def添加计数值(df、月开始、月停止、分组列、状态、新列):
df['CreatedDate']=pd.to_datetime(df['CreatedDate']]
df['DateStartBack']=df['CreatedDate']-pd.DateOffset(月=月开始)
df['DateStopBack']=df['CreatedDate']-pd.DateOffset(月数=月数)
col=[]
对于df.index中的i:
检查\u start=df.iloc[i]['DateStartBack']
检查[u stop=df.iloc[i]['DateStopBack']
检查_group=df.iloc[i][grouping_column]#grouping column(车间或供应商)
计数=len(df.loc[(df['CreatedDate']>检查停止)&
(df['CreatedDate']<检查开始)&
(df.iloc[:][分组列]==检查组)&
(df['Status'].isin(Status))]
)
列追加(计数)
df=df.drop(列=['DateStartBack','DateStopBack'])
df2=pd.DataFrame({new_col:col})
返回df.join(df2)
添加盘点值(df、0、1、‘供应商’、[‘已售出’、‘交付中’]、‘供应商最后一次\u 30天\u售出’)

之所以花费如此长的时间,是因为熊猫是一个操作数据非常慢的模块。看看numpy,大约1000倍quicker@Jkind9但这是完全错误的。熊猫在下面使用numpy函数。让熊猫慢下来的是你没有正确使用它。例如,与“应用”或“循环”结合使用。@denis能否请您共享一个您使用的数据示例。不是我在做比较,时间索引显示numpy是quicker@Jkind9这篇博文已经过时(2014年)。您可以找到更多的比较,以及什么方法对于常见操作更快。之所以花费如此长的时间,是因为pandas是一个用于操作数据的非常慢的模块。看看numpy,大约1000倍quicker@Jkind9但这是完全错误的。熊猫在下面使用numpy函数。让熊猫慢下来的是你没有正确使用它。例如,与“应用”或“循环”结合使用。@denis能否请您共享一个您使用的数据示例。不是我在做比较,时间索引显示numpy是quicker@Jkind9这篇博文已经过时(2014年)。您可以找到更多比较,以及什么方法对于常见操作更快。