“ between()”函数,仅包含右或左

时间:2019-10-04 21:27:48

标签: python pandas

所有我都想用熊猫过滤一些日期。 我最初尝试使用此代码

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'

比较

但是,当我执行ween()函数时

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])]

它奏效了,但是其中包括我不希望的10月15日。 Between()函数很有用,但是如果我只需要一个包含端,而另一个需要排斥,我现在想知道我有什么选择。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

between的修复很简单。您需要“排他”的那一天减去一天。就您而言,就是这样

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

否则,如果您真的想完全控制边的包含性,则需要使用pd.IntervalArraypd.IntervalIndex