pandas datetime将星期日设为一周的第一天

时间:2017-04-28 01:37:18

标签: 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
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

我怎样才能以最简单的方式做到这一点?

P.S。我没有提到这个数据集中存在多年。因此,对于极少数情况,今年的最后一天是星期日,我希望今年的第53周除了明年的第一周

2 个答案:

答案 0 :(得分:3)

您可以使用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() 来获取该内容。

Object.keys(data[0])

如果您有多年,则需要在datetimeindex上进行滚动操作。

答案 1 :(得分:1)

简单快速的答案如下:

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

基本上第一天是星期一,所以应用timedelta会将日期时间(星期日)改为次日(星期一)