繁体   English   中英

如何在 python 中使用 isocalendar 按周聚合日期时间数据?

[英]How do I aggregate datetime data by week using isocalendar in python?

我想将日期时间数据汇总到每周的水平。 以下适用于dt.week ,但我收到警告说dt.week已被弃用。 我还没有成功使用 isocalendar。 你会推荐什么?

这是我想按周汇总的数据示例:

import pandas as pd
times = ['2021-01-28 08:00:00', '2021-01-26 08:00:00', '2021-01-25 08:00:00']
quantities = [40, 12, 43]
df = pd.DataFrame({'date':['2021-01-28 08:00:00','2021-01-26 08:00:00','2021-02-25 08:00:00'],
                   'quantity':[40, 12, 43]}) # 52 in one week, 43 in the other week
df['date'] = pd.to_datetime(df['date'])
df

dt.week方法有效,但会引发警告:

df['week_num'] = df['date'].dt.week
df.groupby('week_num').sum('quantity')

结果: week_num 4数量为 52week_num 8数量为 43

警告内容为<ipython-input-50-d66026a79596>:1: FutureWarning: Series.dt.weekofyear and Series.dt.week have been deprecated. Please use Series.dt.isocalendar().week instead. df['week_num'] = df['date'].dt.week <ipython-input-50-d66026a79596>:1: FutureWarning: Series.dt.weekofyear and Series.dt.week have been deprecated. Please use Series.dt.isocalendar().week instead. df['week_num'] = df['date'].dt.week

我会跟着并尝试它所说的:

>>> df.groupby(df['date'].dt.isocalendar().week).sum('quantity')
      quantity
week          
4           52
8           43

或者,如果您更喜欢week_num

df.groupby(
    df['date'].dt.isocalendar().week
).sum('quantity').rename_axis(index='week_num')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM