您可以使用between
函数。
我使用下面的代码生成了一个样本数据框:
import datetime
d = {'timestamp': pd.Series([datetime.datetime.now() +
datetime.timedelta(hours=i) for i in range(20)]),
'volume': pd.Series([s for s in range(20)])}
df = pd.DataFrame(d)
df['timeframe']
is
0 2017-02-13 22:37:54.515840
1 2017-02-13 23:37:54.515859
2 2017-02-14 00:37:54.515865
3 2017-02-14 01:37:54.515870
4 2017-02-14 02:37:54.515878
5 2017-02-14 03:37:54.515884
6 2017-02-14 04:37:54.515888
...
17 2017-02-14 15:37:54.515939
18 2017-02-14 16:37:54.515943
19 2017-02-14 17:37:54.515948
df.dtypes
timestamp datetime64[ns]
volume int64
dtype: object
就像你的例子中,df['timestamp']
的 dtype
是 object
,因此你可以这样做:
df['timestamp'] = pd.to_datetime(df['timestamp'], coerce=True)
通过设置参数coerce=True
,如果转换某个特定字符串失败,则这些行将被设置为NaT
。
然后可以使用以下方式使用between
进行过滤
df[df.timestamp.dt.strftime('%H:%M:%S').between('11:00:00','18:00:00')]
将返回
13 2017-02-14 11:37:54.515922 13
14 2017-02-14 12:37:54.515926 14
15 2017-02-14 13:37:54.515930 15
16 2017-02-14 14:37:54.515935 16
17 2017-02-14 15:37:54.515939 17
18 2017-02-14 16:37:54.515943 18
19 2017-02-14 17:37:54.515948 19
df['timestamp'].dtype
是什么? - juanpa.arrivillaga>=
。此外,无论dtype是对象还是日期时间,df[df.timestamp > '08:00:00']
都应该可以工作。 - cmaherdf.set_index('timestamp').between_time('08:00','17:00').reset_index()
? - MaxU - stand with Ukrainedf.timestamp
转换为datetime格式。如果你可以在字符串中包含日期(即你正在查看单日的时间戳),那么你可以使用df[df.timestamp >= '2013-03-01 08:00:00']
。 - cmaher