【问题标题】:Creating a sequence of dates for each group in Python 3在 Python 3 中为每个组创建日期序列
【发布时间】:2021-02-20 16:22:59
【问题描述】:

我有一个包含多个商店/零售商的数据集:

RETAILER    VOLUME  DISP    PRICE
store1      12      15      10
store1      10      8       17
store1      12      13      12
...
store2      22      22      30
store2      17      14      22
store2      23      18      18
...
store3      11      13      10
store3      12      13      13
store3      14      12      11

不幸的是,这个数据集不包含日期,所以我需要为这个表中的每个商店生成日期序列。频率并不是那么重要 - 几天或几个月就可以了。

为了方便起见,我们假设它从 2000 年 1 月 1 日开始,每个 RETAILER 的日期数取决于该 RETAILER 的观察次数。

我可以在 R 中处理这个问题:

df <- df %>% 
  arrange(RETAILER) %>% 
  group_by(RETAILER) %>%  
  mutate(dates = seq(as.Date("2000-01-01"), by = "month", length.out = n()))

但是,我无法在 Python 中复制它。我一直在尝试使用 pd.date_range(),但找不到解决方案。

谁能建议一些在 Python 中执行此任务的方法?

想要的输出:

RETAILER    VOLUME  DISP    PRICE   DATE
store1      12      15      10      2000-01-01
store1      10      8       17      2000-02-01
store1      12      13      12      2000-03-01
...
store2      22      22      30      2000-01-01
store2      17      14      22      2000-02-01
store2      23      18      18      2000-03-01
...
store3      11      13      10      2000-01-01
store3      12      13      13      2000-02-01
store3      14      12      11      2000-03-01

【问题讨论】:

    标签: python python-3.x pandas date seq


    【解决方案1】:

    让我们groupRETAILER 上的数据帧并使用cumcount 为每个RETAILER 创建顺序计数器,然后map 这个计数器到MonthBegin 偏移并添加一个Timestamp('2000-01-01')

    c = df.groupby('RETAILER').cumcount()
    df['DATE'] = pd.Timestamp('2000-01-01') + c.map(pd.offsets.MonthBegin)
    

      RETAILER  VOLUME  DISP  PRICE       DATE
    0   store1      12    15     10 2000-01-01
    1   store1      10     8     17 2000-02-01
    2   store1      12    13     12 2000-03-01
    3   store2      22    22     30 2000-01-01
    4   store2      17    14     22 2000-02-01
    5   store2      23    18     18 2000-03-01
    6   store3      11    13     10 2000-01-01
    7   store3      12    13     13 2000-02-01
    8   store3      14    12     11 2000-03-01
    

    【讨论】:

    • 谢谢!这确实有效。似乎从 R 切换到 Python 并不像我想象的那么容易。 :)
    • @Freejack 一旦你熟悉了 python 世界,它会变得更容易,它会变得更有趣;)
    猜你喜欢
    • 2015-10-30
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多