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

Python 如何在没有小时/分钟/秒的情况下以datetime格式创建周列?,python,pandas,group-by,Python,Pandas,Group By,我遵循本教程是为了在pandas中创建一个week列:。如果你有一个没有小时、分钟和秒的约会,答案很好。但这对我不起作用。实际上,我甚至不需要答案的总结部分,只需要创建周专栏,这看起来很简单,但我找不到解决方案 我有一个带有产品id、价格和销售时间的数据集,如下所示: sold_date id price 2020-01-01 20:00:01 A1 100 2020-01-02 10:03:01 B1 110 2020-

我遵循本教程是为了在pandas中创建一个week列:。如果你有一个没有小时、分钟和秒的约会,答案很好。但这对我不起作用。实际上,我甚至不需要答案的总结部分,只需要创建周专栏,这看起来很简单,但我找不到解决方案

我有一个带有产品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
.
.
.
我只想添加一个带有创建周的datetime列。我正在努力做到这一点:

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


提前谢谢。很抱歉,数据问题,我无法共享我正在处理的表。

您可以使用
访问时段
,然后获取时段的
开始时间

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

根据您的
salled\u date
列的日期类型,可以简单地转换为
pd.datetime
,如下所示:

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
.
.
.
df[“售出日期”]=pd.to\u日期时间(df[“售出日期”)

一旦出现这种情况,您可以通过执行以下操作来访问日期:


df[“出售日期”]=df[“出售日期”].dt.日期2020年2月3日是星期一,而不是2月2日。