如何在 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 中对时间序列进行切片的主要内容,如果未能解决你的问题,请参考以下文章