首页 > 解决方案 > Python日期系列生成

问题描述

在 python 中,给定一个开始日期:2018 年 11 月 2 日(星期五),我需要生成一个包含一系列每周日期的数据框,并将它们标记如下:基本上每个日期对从一个星期五到下一个星期四,跨越 1 周

START_DT    END_DT        WEEK_IND  MONTH_IND(same month as END_DT)
2018-11-01  2018-11-08     1         201811
2018-11-09  2018-11-15     2         201811
2018-11-16  2018-11-22     3         201811
2018-11-23  2018-11-29     4         201811
2018-11-30  2018-12-06     1         201812( WEEK_IND resets as it is a new month)
...
...

有人可以指出我正确的方向吗?

标签: pythonpandas

解决方案


你可以这样做:

import pandas as pd

start = pd.date_range(start='20181102', end='20181231', freq='1w-FRI')
end = start + pd.DateOffset(6)

df = pd.DataFrame({ 'start': start, 'end': end, 'month': end.strftime('%Y%m')}, columns=['start', 'end', 'month'])
df['week'] = df.groupby('month').cumcount() + 1

print(df)

输出

       start        end   month  week
0 2018-11-02 2018-11-08  201811     1
1 2018-11-09 2018-11-15  201811     2
2 2018-11-16 2018-11-22  201811     3
3 2018-11-23 2018-11-29  201811     4
4 2018-11-30 2018-12-06  201812     1
5 2018-12-07 2018-12-13  201812     2
6 2018-12-14 2018-12-20  201812     3
7 2018-12-21 2018-12-27  201812     4
8 2018-12-28 2019-01-03  201901     1

推荐阅读