如何生成一个序列,其中包含相对于 pandas 中给定日期的下个月的每个日期
How to generate a series containing each date for the following month relative to a given date in pandas
我的起点是变量data_published_date
data_published_date
Out[47]: "DatetimeIndex(['2022-03-18'], dtype='datetime64[ns]', freq=None)"
因为它是三月份的日期,我希望为下个月生成每一天作为时间戳,例如
['2022-04-01', '2022-04-02', '2022-04-03'.....'2022-04-30']
我试过了
index = pd.date_range(data_published_date + pd.offsets.MonthBegin(n=1), data_published_date + pd.offsets.MonthEnd(n=1))
并收到
TypeError: Cannot convert input [DatetimeIndex(['2022-04-01'],
dtype='datetime64[ns]', freq=None)] of type <class
'pandas.core.indexes.datetimes.DatetimeIndex'> to Timestamp
然后尝试了 2 个步骤
start_date = data_published_date + pd.offsets.MonthBegin(n=1)
end_date = data_published_date + pd.offsets.MonthEnd(n=2)
但找不到将这 2 个 Datetimeindex 转换为时间戳的解决方案,以便我可以使用 pd.date_range
访问我的 objective.
有什么想法吗?
这是一个可行的解决方案
pd.date_range(start=(data_published_date + pd.offsets.MonthBegin(n=1)).date[0],
end=(data_published_date + pd.offsets.MonthBegin(n=2)).date[0]-pd.Timedelta(days=1))
输出:
DatetimeIndex(['2022-04-01', '2022-04-02', '2022-04-03', '2022-04-04',
'2022-04-05', '2022-04-06', '2022-04-07', '2022-04-08',
'2022-04-09', '2022-04-10', '2022-04-11', '2022-04-12',
'2022-04-13', '2022-04-14', '2022-04-15', '2022-04-16',
'2022-04-17', '2022-04-18', '2022-04-19', '2022-04-20',
'2022-04-21', '2022-04-22', '2022-04-23', '2022-04-24',
'2022-04-25', '2022-04-26', '2022-04-27', '2022-04-28',
'2022-04-29', '2022-04-30'],
dtype='datetime64[ns]', freq='D')
我得到了后面两个月的开始,后面一个月减去1,就有了一个单独一个月的范围。
我认为问题是 data_published_date
是 Index 对象,但 date_range
需要一个单例。因为它只包含一个元素,我们可以索引它并使用它:
out = pd.date_range(data_published_date[0] + pd.offsets.MonthBegin(n=1),
data_published_date[0] + pd.offsets.MonthEnd(n=2))
输出:
DatetimeIndex(['2022-04-01', '2022-04-02', '2022-04-03', '2022-04-04',
'2022-04-05', '2022-04-06', '2022-04-07', '2022-04-08',
'2022-04-09', '2022-04-10', '2022-04-11', '2022-04-12',
'2022-04-13', '2022-04-14', '2022-04-15', '2022-04-16',
'2022-04-17', '2022-04-18', '2022-04-19', '2022-04-20',
'2022-04-21', '2022-04-22', '2022-04-23', '2022-04-24',
'2022-04-25', '2022-04-26', '2022-04-27', '2022-04-28',
'2022-04-29', '2022-04-30'],
dtype='datetime64[ns]', freq='D')
我的起点是变量data_published_date
data_published_date
Out[47]: "DatetimeIndex(['2022-03-18'], dtype='datetime64[ns]', freq=None)"
因为它是三月份的日期,我希望为下个月生成每一天作为时间戳,例如
['2022-04-01', '2022-04-02', '2022-04-03'.....'2022-04-30']
我试过了
index = pd.date_range(data_published_date + pd.offsets.MonthBegin(n=1), data_published_date + pd.offsets.MonthEnd(n=1))
并收到
TypeError: Cannot convert input [DatetimeIndex(['2022-04-01'], dtype='datetime64[ns]', freq=None)] of type <class 'pandas.core.indexes.datetimes.DatetimeIndex'> to Timestamp
然后尝试了 2 个步骤
start_date = data_published_date + pd.offsets.MonthBegin(n=1)
end_date = data_published_date + pd.offsets.MonthEnd(n=2)
但找不到将这 2 个 Datetimeindex 转换为时间戳的解决方案,以便我可以使用 pd.date_range
访问我的 objective.
有什么想法吗?
这是一个可行的解决方案
pd.date_range(start=(data_published_date + pd.offsets.MonthBegin(n=1)).date[0],
end=(data_published_date + pd.offsets.MonthBegin(n=2)).date[0]-pd.Timedelta(days=1))
输出:
DatetimeIndex(['2022-04-01', '2022-04-02', '2022-04-03', '2022-04-04',
'2022-04-05', '2022-04-06', '2022-04-07', '2022-04-08',
'2022-04-09', '2022-04-10', '2022-04-11', '2022-04-12',
'2022-04-13', '2022-04-14', '2022-04-15', '2022-04-16',
'2022-04-17', '2022-04-18', '2022-04-19', '2022-04-20',
'2022-04-21', '2022-04-22', '2022-04-23', '2022-04-24',
'2022-04-25', '2022-04-26', '2022-04-27', '2022-04-28',
'2022-04-29', '2022-04-30'],
dtype='datetime64[ns]', freq='D')
我得到了后面两个月的开始,后面一个月减去1,就有了一个单独一个月的范围。
我认为问题是 data_published_date
是 Index 对象,但 date_range
需要一个单例。因为它只包含一个元素,我们可以索引它并使用它:
out = pd.date_range(data_published_date[0] + pd.offsets.MonthBegin(n=1),
data_published_date[0] + pd.offsets.MonthEnd(n=2))
输出:
DatetimeIndex(['2022-04-01', '2022-04-02', '2022-04-03', '2022-04-04',
'2022-04-05', '2022-04-06', '2022-04-07', '2022-04-08',
'2022-04-09', '2022-04-10', '2022-04-11', '2022-04-12',
'2022-04-13', '2022-04-14', '2022-04-15', '2022-04-16',
'2022-04-17', '2022-04-18', '2022-04-19', '2022-04-20',
'2022-04-21', '2022-04-22', '2022-04-23', '2022-04-24',
'2022-04-25', '2022-04-26', '2022-04-27', '2022-04-28',
'2022-04-29', '2022-04-30'],
dtype='datetime64[ns]', freq='D')