`pandas.tseries.offsets` трудно предсказать результатPython

Программы на Python
Anonymous
`pandas.tseries.offsets` трудно предсказать результат

Сообщение Anonymous »

Мне было очень сложно предсказать результаты, полученные 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

Вернуться в «Python»