如何在 Pandas 中对时间序列进行切片

Posted

技术标签:

【中文标题】如何在 Pandas 中对时间序列进行切片【英文标题】:How to slice time series in 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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何在 Pandas 中对时间序列进行切片的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Bash 中对数组进行切片

如何在索引中没有的日期对 pandas 时间序列进行切片?

如何在 Swift 中对字符串进行切片? [复制]

如何在 Excel VBA 中对数组进行切片?

如何在 TensorFlow 中对数据集进行切片?

如何在 TensorFlow 中对批次进行切片并在每个切片上应用操作