【问题标题】:How to slice time series in Pandas如何在 Pandas 中对时间序列进行切片
【发布时间】:2020-04-09 05:41:54
【问题描述】:

我有一个时间序列,其中客户在某一天花费了一定价值的现金。我被要求逐月了解在 2018 年 1 月至 2018 年 12 月期间以及接下来的 12 个月期间有多少独立客户。

我正在努力研究如何使用 rolling() 函数设置一个 12 个月的窗口来计算这个数字。有人可以帮忙吗?

date        value customers
2018-01-01  5.0   a
2018-01-01  10.0  a
2018-01-02  2.0   c
2018-01-04  10.0  b
2018-01-06  20.0  a

【问题讨论】:

    标签: pandas time-series rolling-computation


    【解决方案1】:

    试试这个:

    df['date'] = pd.to_datetime(df['date'])
    df = df.set_index('date')
    df.groupby(df.index.to_period('M'))['customers'].nunique()
    

    【讨论】:

      【解决方案2】:

      IIUC,您只需要在索引期间进行 groupby。我在不同月份和年份的样本中添加了几行

      示例df

                  value customers
      date
      2018-01-01    5.0         a
      2018-01-01   10.0         a
      2018-01-02    2.0         c
      2018-01-04   10.0         b
      2018-01-06   20.0         a
      2018-02-12    5.0         a
      2018-02-12    2.0         c
      2018-02-14   10.0         b
      2018-02-16   20.0         a
      2019-01-01    5.0         a
      2019-01-01   10.0         a
      2019-01-02    2.0         c
      2019-01-06   20.0         a
      2019-02-12    5.0         a
      2019-02-12    2.0         c
      2019-02-14   10.0         b
      2018-02-16   20.0         a
      
      df.groupby(df.index.to_period('M')).customers.nunique()
      
      Out[281]:
      date
      2018-01    3
      2018-02    3
      2019-01    2
      2019-02    3
      Freq: M, Name: customers, dtype: int64
      

      【讨论】:

        猜你喜欢
        • 2016-01-18
        • 2014-11-09
        • 2012-12-15
        • 2012-09-17
        • 2020-01-12
        • 1970-01-01
        • 2018-11-19
        • 1970-01-01
        • 2012-07-03
        相关资源
        最近更新 更多