Python 熊猫日期时间将星期日设置为一周的第一天

Python 熊猫日期时间将星期日设置为一周的第一天,python,pandas,datetime,Python,Pandas,Datetime,我有一个熊猫数据框,上面有一系列日期(所有的星期天),如下所示: Date Year Week 2011-01-02 2011 52 2011-01-23 2011 3 2011-01-23 2011 3 2011-01-30 2011 4 2011-01-30 2011 4 周由df['Date'].dt.week给出,我想要的是将星期日设置为一周的第一天,这样我就可以得到: Date Year Week 201

我有一个熊猫数据框,上面有一系列日期(所有的星期天),如下所示:

Date        Year    Week
2011-01-02  2011    52
2011-01-23  2011    3
2011-01-23  2011    3
2011-01-30  2011    4
2011-01-30  2011    4
周由
df['Date'].dt.week
给出,我想要的是将星期日设置为一周的第一天,这样我就可以得到:

Date        Year    Week
2011-01-02  2011    1
2011-01-23  2011    4
2011-01-23  2011    4
2011-01-30  2011    5
2011-01-30  2011    5
我怎样才能用最简单的方法做到这一点


另外,我没有提到这个数据集中有很多年。因此,对于罕见的情况,一年的最后一天是星期天,我想得到今年的第53周,而不是明年的第1周。你可以使用
dayofweek
来得到它

date = pd.DatetimeIndex(start='2011-01-02', end='2011-12-31',freq='D')
df = pd.DataFrame([date,date.year,date.week,date.dayofweek])
df = df.T
df.columns=['date','year','week','dayofweek']
df['newweek'] = 0
df.loc[df['dayofweek']==6, 'newweek'] = 1
df['newweek'] = df['newweek'].cumsum()

如果您有多个年份,则可以对datetimeindex执行滚动操作。

简单而快速的回答如下:

df['Week'] = df['Date'].apply(lambda x: (x + dt.timedelta(days=1)).week)

df
        Date  Year  Week
0 2011-01-02  2011     1
1 2011-01-23  2011     4
2 2011-01-23  2011     4
3 2011-01-30  2011     5
4 2011-01-30  2011     5

基本上,第一天是星期一,因此应用时间增量将日期时间(星期日)移到第二天(星期一)

很抱歉,我没有提到此数据集中存在多年。因此,在极少数情况下,一年中的最后一天是星期天,如果只是换一天,那么除了今年的最后一周(第53周),明年的第一周就会出现;对datetimeindex执行滚动操作意味着什么?