Python 在数据帧上遇到averageifs异常问题

Python 在数据帧上遇到averageifs异常问题,python,python-3.x,pandas,dataframe,average,Python,Python 3.x,Pandas,Dataframe,Average,我让dataframe成功地执行了excel中averageifs语句的等效操作,但我不知道如何添加此排除语法。我想要为该客户编号和产品订购的所有单位的平均值,该订单编号行除外。我想这可能是一个Where Not,但我真的不知道如何实现 从逻辑上讲,如果顺序是一个错误,那么这将从平均值中排除该特定顺序,这是报告的全部目的 #SQL Query SQLCommand =("SELECT DISTINCT RMORHP.ORHORDNUM AS 'Order_Number', RMORHP.ORHC

我让dataframe成功地执行了excel中averageifs语句的等效操作,但我不知道如何添加此排除语法。我想要为该客户编号和产品订购的所有单位的平均值,该订单编号行除外。我想这可能是一个Where Not,但我真的不知道如何实现

从逻辑上讲,如果顺序是一个错误,那么这将从平均值中排除该特定顺序,这是报告的全部目的

#SQL Query
SQLCommand =("SELECT DISTINCT RMORHP.ORHORDNUM AS 'Order_Number', RMORHP.ORHCRTDTE AS 'Order_Create_Date', RMORHP.ORHCRTUSR AS 'Created By', CONCAT(RMORHP.ORHCUSCHN,'-',RMORHP.ORHCUSNUM) AS 'Customer_Number', RMORHP.ORHCUSCHN AS 'Chain ID', RMORHP.ORHCUSNUM AS 'Cust ID', RMCUSP.CUSCUSNAM AS 'Customer Name', RMORDP.ORDITMNUM AS 'Product', RMITMP.ITMLNGDES AS 'Product Name', RMORDP.ORDADJQTY AS 'Units_Ordered'"
             " FROM BIDW_DataLake.eRMS.RMCUSP RMCUSP, BIDW_DataLake.eRMS.RMITMP RMITMP, BIDW_DataLake.eRMS.RMORDP RMORDP, BIDW_DataLake.eRMS.RMORHP RMORHP"
             " WHERE (RMORHP.ORHCRTDTE Between ? And ?) AND (RMCUSP.CUSCUSCHN=RMORHP.ORHCUSCHN) AND (RMCUSP.CUSCUSNUM=RMORHP.ORHCUSNUM) AND (RMORHP.ORHORDNUM=RMORDP.ORDORDNUM) AND (RMORDP.ORDITMNUM=RMITMP.ITMITMNUM) AND (RMCUSP.CUSDFTDCN=505)")

df = pd.read_sql_query(SQLCommand, cnxn, params=(qtrprior,today,))

df['Avg_Units_Ordered'] = (df.groupby(['Customer_Number','Product'])['Units_Ordered'].transform('mean')).round(0)
df['Var_From_Avg'] = df['Avg_Units_Ordered'] - df['Units_Ordered']
df['Var_From_Avg'] = df['Var_From_Avg'].abs().round(0)


df2 = df.query('Order_Create_Date == @today')
df2 = df2.query('Var_From_Avg >= @MinVar')
df2 = df2.query('Avg_Units_Ordered * @MinMul <= Units_Ordered')
编辑:下面是一些行的可视示例。我希望它基于产品和客户运行一个平均值,它是这样做的,但也将订单号从平均值中排除,它不是这样做的。可能是一个过滤器,它只查看以前的日期范围,即今天-1。那就行了。就像今天下订单创建日期<一样。我只是不知道该怎么写


在执行平均操作之前,如何对数据帧进行子集设置

差不多


df[df.Order\u Create\u Date你能给出一些样本df和输出df吗?然后我如何运行我的averageifs calc?一旦你对数据集进行子集,你只有Order\u Create\u Date值小于当前日期的记录。所以你可以简单的平均。