示例数据
我有一个DataFrame,看起来像这样:
日期 | 参数 | 2010-01-02 | 某个值 |
---|---|
2010-01-03 | 某个值 |
2010-01-04 | 某个值 |
… | … |
2011-01-02 | 某个值 |
2011-01-03 | 某个值 |
2011-01-04 | 某个值 |
… | … |
2012-01-02 | 某个值 |
2012-01-03 | 某个值 |
2012-01-04 | 某个值 |
DataFrame.query
期望您引用列名;df.query('Date < limit_date')
正在尝试查询'Date'
列中的值小于'limit_date'
列中的值的行。(它怎么知道'Date'
是一个列,但limit_date
是一个变量,假设你引用它们类似?)
为了区分列和环境变量,您需要在环境变量之前添加@
。
df.query('Date < @limit_date')
# Date
#0 2010-01-01
#1 2010-01-02
#2 2010-01-03
#3 2010-01-04
你的第一次尝试:df[df['Date'] < limit_date]
在技术上是正确的,应该工作。很可能,您对DataFrame应用了先前的筛选器并覆盖了结果,因此现在当您应用此筛选器时,结果是空的DataFrame。刷新内核并从头开始。
示例数据
import pandas as pd
df = pd.DataFrame({'Date': pd.date_range('2010-01-01', freq='D', periods=20)})
limit_date = '2010-01-05'