我试图为我的销售表中的每种不同产品创建独特买家的摘要。我的目标结果如下:
custsegunique\u prod1\u cust0high71low82mid4
创建此摘要并将其分配给变量,如下所示:
# Count of DISTINCT PROD1 CUSTOMERS
PROD1_CUST = (
Sales_Df.loc[(Sales_Df.Prod1_Qty > 0)]
.groupby("CustSeg")["CustID"]
.count()
.reset_index(name="UNIQUE_PROD1_CUST")
)
PROD1_CUST
sales_df Dataframe 可以通过以下方式复制:
Sales_Qty = {
"CustID": ['C01', 'C02', 'C03', 'C04', 'C05', 'C06', 'C07', 'C08', 'C09', 'C10', 'C11', 'C12', 'C13', 'C14', 'C15', 'C16', 'C17', 'C18', 'C19', 'C20', ],
"CustSeg": ['High', 'High', 'Mid', 'High', 'Low', 'Low', 'Low', 'Low', 'Low', 'Mid', 'Low', 'Low', 'Mid', 'Low', 'High', 'High', 'High', 'High', 'Mid', 'Low', ],
"Prod1_Qty": [8, 7, 12, 15, 7, 15, 7, 8, 3, 15, 0, 3, 4, 4, 7, 11, 12, 12, 6, 1, ],
"Prod2_Qty": [2, 5, 0, 1, 14, 15, 3, 1, 11, 0, 5, 11, 12, 8, 6, 15, 7, 4, 3, 10, ],
"Prod3_Qty": [13, 4, 0, 11, 3, 5, 11, 11, 10, 14, 2, 4, 3, 14, 14, 10, 5, 0, 0, 9, ],
"Prod4_Qty": [11, 15, 2, 0, 6, 2, 12, 14, 11, 15, 5, 14, 13, 0, 10, 2, 13, 11, 12, 15, ],
"Prod5_Qty": [9, 15, 5, 4, 9, 0, 13, 9, 8, 11, 10, 12, 8, 3, 14, 11, 9, 15, 8, 14, ]
}
Sales_Df = pd.DataFrame(Sales_Qty)
Sales_Df
现在,在现实生活中,数据框的形状要大得多(至少(5000000130)),这使得手动重复每个产品的摘要变得很脆弱,因此我尝试自动创建变量和摘要。我将通过以下步骤完成这项任务。
# Extract the proposed variable names from the dataframe column names.
all_cols = Sales_Df.columns.values.tolist()
# Remove non-product quantity columns from the list
not_prod_cols = ["CustSeg", "CustID"]
prod_cols = [x for x in all_cols if x not in not_prod_cols]
我知道接下来的事情应该是:
从列表prod_cols创建变量名并将这些变量存储在列表中-让我们将列表prod_dfs命名
产品dfs=[]
使用下面的“逻辑”创建动态公式,以创建 Dataframe 并将其变量名附加到prod_dfs。
对于产品目录中的x:x[:-4]+“-cust”=(销售方向loc[(销售方向x>0)].groupby(“custseg”)[“custid”].count().reset_index(name=“unique”+x[:-4]+“-cust”)) prod_dfs.append(x)
这就是我被困的地方。请帮忙。
暂无答案!
目前还没有任何答案,快来回答吧!