python - 使用变量时的 Pandas 日期时间列过滤问题
问题描述
我正在尝试根据我的数据框列之一中的日期过滤熊猫列。因此,例如,我有一列名为“日期”,已使用转换为日期时间
df['Date'] = pd.to_datetime(df['Date'])
例如,以 2019-06-01 格式放置它。现在我可以在列上执行过滤器,所以如果我只想在 6 月获得日期,我可以这样做
df[(df['Date'] >= '2019-06-01') & (df['Date'] <= '2019-06-30')]
这很好用,将日期时间与字符串进行比较,我假设熊猫会自动将其转换为日期时间以执行比较。
但是,一旦我将比较字符串分配给变量,这就会停止工作,所以如果我这样做
start = '2019-06-01'
end = '2019-06-30'
df[(df['Date'] >= start) & (df['Date'] <= end)]
我收到一个错误:TypeError: Invalid comparison between dtype=datetime64[ns] and str
关于为什么会发生这种情况的任何想法?
解决方案
我使用Pandas 0.25版和Python 3.7.0版。
我检查了你的代码:
start = '2019-06-01'
end = '2019-06-30'
df[(df['Date'] >= start) & (df['Date'] <= end)]
得到正确的结果(没有错误)。
如果您使用一些旧版本的Python或Pandas,请考虑升级它们。
我还检查了其他代码变体:
将“边界”值转换为datetime:
d1 = pd.to_datetime('2019-06-01') d2 = pd.to_datetime('2019-06-30') df[df.Date.between(d1, d2)]
将两个参数都用作字符串s的between的用法:
df[df.Date.between('2019-06-01', '2019-06-30')]
也得到了正确的结果。在您的安装上检查它们现在和升级后(如果您决定这样做)。
推荐阅读
- bash - 从 CLI 使 Linux 中的音频静音的脚本可以工作,但需要帮助
- android - 类调用不需要类型参数
- python - 文本不适用于pdf
- python - Pandas Groupby:TypeError:不支持的操作数类型为-:'str'和'str'
- asterisk - 为调查活动自动发送 DTMF,Goautodial v3
- php - php.ini 中 PHP 扩展的默认路径是什么?
- testng - testNG.xml 中传入的参数
- reactjs - 已部署的 React 项目上的 HTTPS 错误
- android - WebSocket - 状态码 403 和状态消息 - 禁止
- algorithm - 印了多少颗星?