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

如何为时间序列数据按日期与product_code分组新增store_locations列?

解决方法

要实现新增store_locations列,统计同一日期下单个商品的售卖门店总数,你需要调整分组维度,同时确保计算结果能映射回原DataFrame的每一行。

问题分析

你原代码的问题在于第二次分组时仅按product_code(level=2)统计,完全忽略了date维度,所以得到的是每个商品在所有日期的总门店数,而非单日数据。

正确实现方式

方法一:使用groupby + transform(推荐)

这种方法最简洁,transform会自动把分组计算的结果广播到原DataFrame的对应行:

df['store_locations'] = df.groupby(['date', 'product_code'])['store_location'].transform('nunique')
  • 按date和product_code组合分组,确保统计的是单日单商品的维度
  • nunique()用于计算每组内store_location的唯一值数量,也就是售卖门店数
  • transform保证每一行都能获取到对应分组的统计结果,完美匹配目标格式

方法二:先去重再合并

如果需要更直观的分步操作,也可以先去重再计数,最后合并回原表:

# 先去除同一日期、商品、门店的重复记录
unique_records = df.drop_duplicates(['date', 'product_code', 'store_location'])
# 按日期和商品分组,统计门店数量
store_counts = unique_records.groupby(['date', 'product_code']).size().rename('store_locations')
# 将统计结果合并回原DataFrame
df = df.merge(store_counts, on=['date', 'product_code'], how='left')

两种方法都能得到你想要的目标效果:

datestore_locationproduct_codestore_locations
2017-01-01Store-A1003
2017-01-01Store-B1003
2017-01-01Store-C1003
2017-01-01Store-D2001
2017-01-02Store-D2001

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:31:00