首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pandas数据帧中选择特定时间之间的数据

在pandas数据帧中选择特定时间之间的数据
EN

Stack Overflow用户
提问于 2013-10-04 18:38:49
回答 4查看 22K关注 0票数 19

我的Pandas Dataframe框架看起来像这样

代码语言:javascript
复制
 1. 2013-10-09 09:00:05
 2. 2013-10-09 09:05:00
 3. 2013-10-09 10:00:00
 4.  ............
 5.   ............
 6.   ............
 7. 2013-10-10 09:00:05
 8. 2013-10-10 09:05:00 
 9. 2013-10-10 10:00:00

我希望数据在9小时到10小时之间的...if任何人都有这样的工作,这将是非常有帮助的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-04 19:58:42

代码语言:javascript
复制
 In [7]: index = date_range('20131009 08:30','20131010 10:05',freq='5T')

In [8]: df = DataFrame(randn(len(index),2),columns=list('AB'),index=index)

In [9]: df
Out[9]: 
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 308 entries, 2013-10-09 08:30:00 to 2013-10-10 10:05:00
Freq: 5T
Data columns (total 2 columns):
A    308  non-null values
B    308  non-null values
dtypes: float64(2)

In [10]: df.between_time('9:00','10:00')
Out[10]: 
                            A         B
2013-10-09 09:00:00 -0.664639  1.597453
2013-10-09 09:05:00  1.197290 -0.500621
2013-10-09 09:10:00  1.470186 -0.963553
2013-10-09 09:15:00  0.181314 -0.242415
2013-10-09 09:20:00  0.969427 -1.156609
2013-10-09 09:25:00  0.261473  0.413926
2013-10-09 09:30:00 -0.003698  0.054953
2013-10-09 09:35:00  0.418147 -0.417291
2013-10-09 09:40:00  0.413565 -1.096234
2013-10-09 09:45:00  0.460293  1.200277
2013-10-09 09:50:00 -0.702444 -0.041597
2013-10-09 09:55:00  0.548385 -0.832382
2013-10-09 10:00:00 -0.526582  0.758378
2013-10-10 09:00:00  0.926738  0.178204
2013-10-10 09:05:00 -1.178534  0.184205
2013-10-10 09:10:00  1.408258  0.948526
2013-10-10 09:15:00  0.523318  0.327390
2013-10-10 09:20:00 -0.193174  0.863294
2013-10-10 09:25:00  1.355610 -2.160864
2013-10-10 09:30:00  1.930622  0.174683
2013-10-10 09:35:00  0.273551  0.870682
2013-10-10 09:40:00  0.974756 -0.327763
2013-10-10 09:45:00  1.808285  0.080267
2013-10-10 09:50:00  0.842119  0.368689
2013-10-10 09:55:00  1.065585  0.802003
2013-10-10 10:00:00 -0.324894  0.781885
票数 35
EN

Stack Overflow用户

发布于 2018-08-03 23:46:42

在拆分原始列之后,为该时间创建一个新列。使用以下代码将您的时间分成小时、分钟和秒:

代码语言:javascript
复制
df[['h','m','s']] = df['Time'].astype(str).str.split(':', expand=True).astype(int)

完成后,您必须通过过滤数据来选择数据:-

代码语言:javascript
复制
df9to10 =df[df['h'].between(9, 10, inclusive=True)]

而且,它是动态的,如果你想在9到10之间再取一个周期。

票数 1
EN

Stack Overflow用户

发布于 2022-01-24 21:08:30

另一种使用query的方法。使用Python 3.9进行了测试。

代码语言:javascript
复制
from Pandas import Timestamp
from datetime import time
df = pd.DataFrame({"timestamp": 
[Timestamp("2017-01-03 09:30:00.049"), Timestamp("2017-01-03 09:30:00.049"),
 Timestamp("2017-12-29 16:12:34.214"), Timestamp("2017-12-29 16:17:19.006")]})
df["time"] = df.timestamp.dt.time
start_time = time(9,20,0)
end_time = time(10,0,0)
df_times = df.query("time >= @start_time and time <= @end_time")

在:

代码语言:javascript
复制
              timestamp
2017-01-03 09:30:00.049
2017-01-03 09:30:00.049
2017-12-29 16:12:34.214
2017-12-29 16:17:19.006

输出:

代码语言:javascript
复制
              timestamp             time
2017-01-03 09:30:00.049  09:30:00.049000
2017-01-03 09:30:00.049  09:30:00.049000

额外的好处是,可以在查询中使用任意复杂的表达式,例如选择两个单独时间范围内的所有内容(使用between_time是不可能的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19179214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档