gpt4 book ai didi

python - 使用查询提取日期范围

转载 作者:行者123 更新时间:2023-12-01 05:08:59 27 4
gpt4 key购买 nike

假设我有一个包含日期的列:

df.my_dates

0 2014-06-08
1 2014-03-01
...
148 2014-06-25
149 2014-06-02
Name: my_dates, Length: 150, dtype: datetime64[ns]

以及以下日期:

> d1 
datetime.datetime(2014, 6, 5, 0, 0)

> d2
datetime.datetime(2014, 6, 9, 0, 0)

我想提取这两个日期之间的所有条目。我尝试过:

# The statement below translates into "'2014-06-05' > my_dates > '2014-06-09'"
my_query = "'{}' > my_dates > '{}'".format(d1.strftime("%Y-%m-%d"),
d2.strftime("%Y-%m-%d"))
df.reset_index().query(my_query)

没有运气。尽管我可以看到这两个日期之间的数据,但我得到一个空数据框。

如何检索这两个日期之间的数据? (请注意,日期本身可能不会出现在数据框中))。我可以为此使用查询吗?

最佳答案

如果你想使用query方法,有两件事需要改变:

In [32]:

from datetime import datetime
d1 = datetime(2014, 6, 5, 0, 0)
d2 = datetime(2014, 6, 9, 0, 0)
d1=pd.to_datetime(d1) #or pd.DatetimeIndex(d1)
d2=pd.to_datetime(d2)
print df
val
0 2014-06-08
1 2014-03-01
148 2014-06-25
149 2014-06-02
In [33]:

print df.query('(@d1 < val)&(val<@d2)')
val
0 2014-06-08

你看,第一,d1d2 必须转换为时间戳。第二,d1d2是外部变量,因此在查询中需要在它们前面添加@

关于python - 使用查询提取日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com