繁体   English   中英

如何在没有小时/分钟/秒的情况下以日期时间格式创建周列?

[英]How can I create a week column in a datetime format without the hours/minutes/seconds?

我遵循本教程是为了在 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

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

您可以使用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

根据您的sold_date列的日期类型,它可能像转换为pd.datetime这样简单:

df["sold_date"] = pd.to_datetime(df["sold_date"])

一旦这样,您可以通过以下方式访问日期:

df["sold_date"] = df["sold_date"].dt.date

暂无
暂无

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

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