如何生成一个序列,其中包含相对于 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')