使用 pandas.date_range() 生成多个日期时间,每周两个日期
Using pandas.date_range() to generate multiple datetimes, two dates per week
我使用 pd.date_range(start_date, end_date, freq='W-MON')
在 start_date=2017-01-01
和 end_date=2017-12-31
之间的每个星期一生成每周频率日期时间,这意味着每月大约生成 4 个日期时间。如何改为每月生成 8 个日期时间,即每周生成 2 个日期时间,但在一周中的不同日期,比如星期一和除星期六或星期日以外的任何其他日期?
至少有两种方法可以实现:
1) 您或许可以选择对应于一周中不同日期的每周频率,然后使用 union
对索引进行很好的排序并附加它们。
start_date = "2017-01-01"
end_date = "2017-12-31"
d1 = pd.date_range(start_date, end_date, freq="W-MON")
d2 = pd.date_range(start_date, end_date, freq="W-TUE")
d1.union(d2)
2) 一种更简单的方法是创建一个对应于额外 Day
的偏移量。接着是同样的union
操作。
from pandas.tseries.offsets import Day
d1.union(d1 + Day(1))
两种方法都会产生:
DatetimeIndex(['2017-01-02', '2017-01-03', '2017-01-09', '2017-01-10',
'2017-01-16', '2017-01-17', '2017-01-23', '2017-01-24',
'2017-01-30', '2017-01-31',
...
'2017-11-27', '2017-11-28', '2017-12-04', '2017-12-05',
'2017-12-11', '2017-12-12', '2017-12-18', '2017-12-19',
'2017-12-25', '2017-12-26'],
dtype='datetime64[ns]', length=104, freq=None)
我使用 pd.date_range(start_date, end_date, freq='W-MON')
在 start_date=2017-01-01
和 end_date=2017-12-31
之间的每个星期一生成每周频率日期时间,这意味着每月大约生成 4 个日期时间。如何改为每月生成 8 个日期时间,即每周生成 2 个日期时间,但在一周中的不同日期,比如星期一和除星期六或星期日以外的任何其他日期?
至少有两种方法可以实现:
1) 您或许可以选择对应于一周中不同日期的每周频率,然后使用 union
对索引进行很好的排序并附加它们。
start_date = "2017-01-01"
end_date = "2017-12-31"
d1 = pd.date_range(start_date, end_date, freq="W-MON")
d2 = pd.date_range(start_date, end_date, freq="W-TUE")
d1.union(d2)
2) 一种更简单的方法是创建一个对应于额外 Day
的偏移量。接着是同样的union
操作。
from pandas.tseries.offsets import Day
d1.union(d1 + Day(1))
两种方法都会产生:
DatetimeIndex(['2017-01-02', '2017-01-03', '2017-01-09', '2017-01-10',
'2017-01-16', '2017-01-17', '2017-01-23', '2017-01-24',
'2017-01-30', '2017-01-31',
...
'2017-11-27', '2017-11-28', '2017-12-04', '2017-12-05',
'2017-12-11', '2017-12-12', '2017-12-18', '2017-12-19',
'2017-12-25', '2017-12-26'],
dtype='datetime64[ns]', length=104, freq=None)