Мне было очень сложно предсказать результаты, полученные pandas.tseries.offsets, особенно когда n==0. Ниже приведен пример с MonthEnd и MonthBegin.
import pandas as pd
from pandas.tseries.offsets import MonthEnd, MonthBegin
date_ = pd.to_datetime('20240601')
print(date_ + MonthBegin(0)) # 2024-06-01 00:00:00
print(date_ - MonthBegin(0)) # 2024-06-01 00:00:00
print(date_ + MonthBegin(1)) # 2024-07-01 00:00:00
print(date_ - MonthBegin(1)) # 2024-05-01 00:00:00
print(date_ + MonthEnd(0)) # 2024-06-30 00:00:00
print(date_ - MonthEnd(0)) # 2024-06-30 00:00:00
print(date_ + MonthEnd(1)) # 2024-06-30 00:00:00
print(date_ - MonthEnd(1)) # 2024-05-31 00:00:00
print('\n')
date_ = pd.to_datetime('20240615')
print(date_ + MonthBegin(0)) # 2024-07-01 00:00:00
print(date_ - MonthBegin(0)) # 2024-07-01 00:00:00
print(date_ + MonthBegin(1)) # 2024-07-01 00:00:00
print(date_ - MonthBegin(1)) # 2024-06-01 00:00:00
print(date_ + MonthEnd(0)) # 2024-06-30 00:00:00
print(date_ - MonthEnd(0)) # 2024-06-30 00:00:00
print(date_ + MonthEnd(1)) # 2024-06-30 00:00:00
print(date_ - MonthEnd(1)) # 2024-05-31 00:00:00
print('\n')
date_ = pd.to_datetime('20240630')
print(date_ + MonthBegin(0)) # 2024-07-01 00:00:00
print(date_ - MonthBegin(0)) # 2024-07-01 00:00:00
print(date_ + MonthBegin(1)) # 2024-07-01 00:00:00
print(date_ - MonthBegin(1)) # 2024-06-01 00:00:00
print(date_ + MonthEnd(0)) # 2024-06-30 00:00:00
print(date_ - MonthEnd(0)) # 2024-06-30 00:00:00
print(date_ + MonthEnd(1)) # 2024-07-31 00:00:00
print(date_ - MonthEnd(1)) # 2024-05-31 00:00:00
Если мне нужно добавить if MonthBegin().is_month_end(date_) else ... раньше? Если есть способ упростить логику и сделать результаты предсказуемыми? например
for date_ in ['20240601','20240615','20240630']:
# In a word, `n==0` indicates this month, `n==-1` means the previous month and `n==1` means the next month.
date_= pd.to_datetime(date_)
print(date_ + MonthBegin(0)) # == 2024-06-01 00:00:00
print(date_ - MonthBegin(0)) # == 2024-06-01 00:00:00
print(date_ + MonthBegin(1)) # == 2024-07-01 00:00:00
print(date_ - MonthBegin(1)) # == 2024-05-01 00:00:00
print(date_ + MonthEnd(0)) # == 2024-06-30 00:00:00
print(date_ - MonthEnd(0)) # == 2024-06-30 00:00:00
print(date_ + MonthEnd(1)) # == 2024-07-31 00:00:00
print(date_ - MonthEnd(1)) # == 2024-05-31 00:00:00
Подробнее здесь: https://stackoverflow.com/questions/784 ... ict-result
`pandas.tseries.offsets` трудно предсказать результат ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать тип данных pandas.tseries.offsets.Day в целочисленный тип dtype
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-