Функция Между () только с правым или левым включением - PullRequest
1 голос
/ 05 октября 2019

все, что я пытаюсь отфильтровать некоторые даты с пандами. Первоначально я пытался сделать это с этим кодом

bd = pd.DataFrame({'year': [2018, 2018], # billing data
                    'month': [9, 10],
                    'day': [14, 15]})
bd = pd.to_datetime(bd)
month1 = (df2.Date >= bd[0]) & (df.Date < bd[1])

Я бы получил ошибку TypeError: Невозможно сравнить тип 'Timestamp' с типом 'str'

Однако, когда я сделал между () функция

bd = pd.DataFrame({'year': [2018, 2018],
                    'month': [9, 10],
                    'day': [14, 15]})
bd = pd.to_datetime(bd)
month1 = df2[df2['Date'].between(bd[0], bd[1])]

Работает, но будет включать 15 октября, чего я не хочу. Функция Между () полезна, но я хотел бы узнать, какие альтернативы у меня есть, если мне нужна только одна сторона включительно, а другая - исключение. Спасибо за помощь.

1 Ответ

0 голосов
/ 05 октября 2019

Исправить для between просто. Вы вычитаете один день на стороне, которую вы хотите «эксклюзив». В вашем случае это так:

a_day = pd.DateOffset(1)
month1 = df2[df2['Date'].between(bd[0], bd[1] - a_day)

В противном случае, если вы действительно хотите полностью контролировать инклюзивность сторон, вам нужно использовать pd.IntervalArray или pd.IntervalIndex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...