首页 > 解决方案 > 如何在没有小时/分钟/秒的情况下以日期时间格式创建周列?

问题描述

我正在关注本教程,以便在 pandas 中创建一周列:在 pandas 中按周分组。如果您有一个没有小时、分钟和秒的日期,答案就可以正常工作。但这对我不起作用。其实我什至不需要答案的总结部分,只需要创建周列,这看起来很简单,但我找不到解决方案。

我有一个包含产品 ID、价格和销售时间的数据集,如下所示:

sold_date            id         price
2020-01-01 20:00:01  A1         100
2020-01-02 10:03:01  B1         110
2020-01-02 11:10:01  B1         130
2020-02-03 22:20:01  A1         110
2020-02-04 23:05:01  A1         140
2020-02-04 21:00:05  B1         190
.
.
.

我只想添加一个带有创建周的日期时间列。我试图做到这一点:

week_sold            id         price
2019-12-30           A1         100
2019-12-30           B1         110
2019-12-30           B1         130
2020-02-02           A1         110
2020-02-02           A1         140
2020-02-02           B1         190
.
.
.

我也可以使用 2019-12-30 00:00:000 之类的东西。我所关注的链接的解决方案的问题是它没有考虑小时数,因此当您仅通过减去 7 天来创建一周列时,您会为每一行获得不同的值。您将获得前两行2019-12-30 20:00:012019-12-30 10:03:01

提前致谢。对数据感到抱歉,我无法分享我正在处理的表格。

标签: pythonpandasgroup-by

解决方案


您可以使用to_period然后抓取start_time期间的。

df['week_sold'] = df['sold_date'].dt.to_period('W').dt.start_time

            sold_date  id  price  week_sold
0 2020-01-01 20:00:01  A1    100 2019-12-30
1 2020-01-02 10:03:01  B1    110 2019-12-30
2 2020-01-02 11:10:01  B1    130 2019-12-30
3 2020-02-03 22:20:01  A1    110 2020-02-03
4 2020-02-04 23:05:01  A1    140 2020-02-03
5 2020-02-04 21:00:05  B1    190 2020-02-03

推荐阅读