从列表中动态创建变量和 Dataframe

rfbsl7qr  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(248)

我试图为我的销售表中的每种不同产品创建独特买家的摘要。我的目标结果如下:
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) 这就是我被困的地方。请帮忙。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题