查找日期时间范围内的日期行索引

发布于 2025-01-10 15:54:50 字数 529 浏览 0 评论 0原文

使用日期时间和数据框,我想找到哪些行属于我指定的日期范围。

示例数据框:

times = pd.date_range(start="2018-01-01",end="2020-02-02")
values = np.random.rand(512)

# Make df
df = pd.DataFrame({'Time' : times, 
                   'Value': values})

如何轻松选择特定月份或范围内的所有值?

我觉得一个好的步骤是使用:

pd.to_datetime(df['Time']).dt.to_period('M')
>>> df
0      2018-01
1      2018-02
2      2018-03

但我不知道如何继续。我希望能够选择像 2019-01 这样的年份/月份或范围 2019-01:2020-01 来查找输入的数据帧中的索引。

Using datetime and a dataframe, I want to find which rows fall within the range of dates I have specified.

Sample dataframe:

times = pd.date_range(start="2018-01-01",end="2020-02-02")
values = np.random.rand(512)

# Make df
df = pd.DataFrame({'Time' : times, 
                   'Value': values})

How do I easily select all values that fall within a certain month or range?

I feel like a good step is using:

pd.to_datetime(df['Time']).dt.to_period('M')
>>> df
0      2018-01
1      2018-02
2      2018-03

But I wouldn't know how to contine. I would like to be able to select a year/month like 2019-01 or a range 2019-01:2020-01 to find the indices in the dataframe that the input.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

染柒℉ 2025-01-17 15:54:50

显然我已经做了正确的事情,但语法错误。

速度很快,但只是为了确定答案:

np.where(pd.to_datetime(df['time']).dt.to_period('M') == '2018-01')

然后也可以指定范围。

I apparently did the right thing already, but had a wrong syntax.

It was quick, but just to be sure here is the answer:

np.where(pd.to_datetime(df['time']).dt.to_period('M') == '2018-01')

Then a range can be specified as well.

神经大条 2025-01-17 15:54:50

使用 查询还可以非常快速地选择日期范围:

df.query('"2019-01-01" <= Time < "2019-02-01"')

With query you can also select date ranges pretty quickly:

df.query('"2019-01-01" <= Time < "2019-02-01"')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文