基于字典实现DataFrame中按动态仓库-门店规则汇总销售数据
解决动态按仓库统计销售总额的方案
核心思路
先将仓库-门店的映射字典反转成门店-仓库的一对一映射,再关联到销售数据表,最后按指定维度分组求和,后续只需更新映射字典即可重新计算。
具体步骤
定义仓库-门店映射字典
根据分组信息创建字典(后续直接更新这个字典就能调整分组规则):# 示例:仓库为键,对应门店列表为值 warehouse_store_map = { "仓库A": ["门店001", "门店002"], "仓库B": ["门店003", "门店004"], "仓库C": ["门店005"] }反转字典为门店-仓库映射
把一对多的仓库-门店关系转换成一对一的门店-仓库关系,方便后续映射到DataFrame:store_to_warehouse = {} for warehouse, stores in warehouse_store_map.items(): for store in stores: store_to_warehouse[store] = warehouse给销售表新增仓库列
使用map方法将门店字段映射为对应的仓库:# 假设销售数据表DataFrame名为sales_df,门店字段名为"门店" sales_df["仓库"] = sales_df["门店"].map(store_to_warehouse)按维度分组求和
按日期、时段、仓库分组,统计销售总额:# 假设销售总额字段名为"销售总额",日期字段名为"日期",时段字段名为"时段" result_df = sales_df.groupby(["日期", "时段", "仓库"])["销售总额"].sum().reset_index()
补充说明
- 后续只需修改
warehouse_store_map字典里的门店归属,重复执行步骤2-4就能自动生成新的统计结果。 - 如果销售表中有门店不在映射字典里,
map后会出现NaN,可根据需求用fillna处理或过滤这些行。
内容的提问来源于stack exchange,提问作者New_to_python
相关产品推荐
相关产品推荐

