我有一个包含一系列日期(所有星期日)的熊猫数据框,如下所示:
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周除了明年的第一周
答案 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会将日期时间(星期日)改为次日(星期一)