You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将列表中的多门店销售DataFrame合并为日期索引、单店单列的DataFrame

解决方案

你完全不需要自己写循环拆分再拼接,直接用pandas内置的pivot_table一行就能实现需求,比你现在写循环的方案简洁高效很多:

import pandas as pd

# 直接生成目标格式的DataFrame
result = df_sales_shops.pivot_table(
    index='Date',  # 设日期为行索引
    columns='Store',  # 设门店编号为列名
    values='Weekly_Sales',  # 填充值取周销售额
    aggfunc='sum'  # 同一门店同一日期的销售额求和
)
# 若需要调整列名格式为「门店X」,可新增以下代码
result.columns = [f'门店_{col}' for col in result.columns]

基于现有逻辑的修正方案

你现有代码的问题是调用reset_index(drop=True)把日期索引丢弃了,后续拼接时无法对齐日期,很容易出现数据错位。如果要基于你已有的拆分逻辑实现,可参考以下代码:

stores_revenue = []
for store in range(1,46):
    # 筛选单门店数据
    temp = df_sales_shops[df_sales_shops['Store'] == store]
    # 按日期求和,同时将该列重命名为对应门店名,保留Date为索引
    store_sale = temp.groupby('Date')['Weekly_Sales'].sum().rename(f'门店_{store}')
    stores_revenue.append(store_sale)

# 按行索引(日期)拼接所有门店的销售额列
result = pd.concat(stores_revenue, axis=1)

说明

  • 以上两种方案都会自动对齐日期索引,不存在不同门店日期错位的问题
  • 内置方法经过官方优化,比手动循环效率更高,数据量越大优势越明显
  • 代码逻辑简洁,大幅降低出错概率

内容的提问来源于stack exchange,提问作者Rocket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:45:07