![](/img/trans.png)
[英]How can I convert a column of hours / minutes with varying digits into datetime objects in python/pandas?
[英]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:01和2019-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.