python - 仅包含右或左的“between()”函数
问题描述
我正在尝试用熊猫过滤一些日期。我最初尝试使用此代码执行此操作
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' 进行比较
但是,当我执行 between() 函数时
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() 函数很有用,但我现在想知道如果我只需要一侧包含,而另一侧排他,我有什么选择。感谢您的帮助。
解决方案
修复between
很简单。您在想要“独家”的一侧减去一天。在你的情况下,它是这样的
a_day = pd.DateOffset(1)
month1 = df2[df2['Date'].between(bd[0], bd[1] - a_day)
否则,如果你真的想完全控制双方的包容性,你需要使用pd.IntervalArray
或pd.IntervalIndex
推荐阅读
- python - 无法在 Python 中绘制精确的曲率切线
- linux - Prestodb cli Oracle Conenction - 需要帮助 - 错误运行命令:身份验证失败:未经授权
- rust - Serde:使用容器#[serde(default)],但有一些必填字段
- powerbi - Power BI 100% 堆积面积图
- assembly - AArch64 (Cortex-A53) - 理解翻译表
- php - Laravel 实体属性值过滤器多重属性
- flutter - 小吃店消息不弹出
- google-cloud-firestore - 为 gcloud storage firestore export 设置正确的权限
- c# - 使用 WindowsFirewallHelper c# 启用和禁用 Windows 防火墙规则
- html - 没有 SVG 的自定义按钮