`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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • `pandas.tseries.offsets` Трудно предсказать результат
    Anonymous » » в форуме Python
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • `pandas.tseries.offsets` Трудно предсказать результат
    Anonymous » » в форуме Python
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • `pandas.tseries.offsets` Трудно предсказать результат
    Anonymous » » в форуме Python
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать тип данных pandas.tseries.offsets.Day в целочисленный тип dtype
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как предсказать результирующий тип после индексации DataFrame Pandas
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

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