gpt4 book ai didi

python - 在特定时间范围内选择观察 datetime64[ns] 类型

转载 作者:行者123 更新时间:2023-11-28 17:43:30 26 4
gpt4 key购买 nike

我有一个 pandas dataframe(dfnew),其中一列 (timestamp) 是 datetime64[ns] 类型。现在我想看看有多少观测值在特定时间范围内,比如说 10:00:00 到 12:00:00。

    dfnew['timestamp'] = dfnew['timestamp'].astype('datetime64[ns]')
dfnew['timestamp]
0 2013-12-19 09:03:21.223000
1 2013-12-19 11:34:23.037000
2 2013-12-19 11:34:23.050000
3 2013-12-19 11:34:23.067000
4 2013-12-19 11:34:23.067000
5 2013-12-19 11:34:23.067000
6 2013-12-19 11:34:23.067000
7 2013-12-19 11:34:23.067000
8 2013-12-19 11:34:23.067000
9 2013-12-19 11:34:23.080000
10 2013-12-19 11:34:23.080000
11 2013-12-19 11:34:23.080000
12 2013-12-19 11:34:23.080000
13 2013-12-19 11:34:23.080000
14 2013-12-19 11:34:23.080000
15 2013-12-19 11:34:23.097000
16 2013-12-19 11:34:23.097000
17 2013-12-19 11:34:23.097000
18 2013-12-19 11:34:23.097000
19 2013-12-19 11:34:23.097000
Name: timestamp

dfnew['Time']=dfnew['timestamp'].map(Timestamp.time)
t1 = datetime.time(10, 0, 0)
t2 = datetime.time(12, 0, 0)
print len(dfnew[t1<dfnew["Time"]<t2])

这会产生错误 TypeError: can't compare datetime.time to Series.我是 Pandas 数据框的新手。我想我在这里犯了一个非常愚蠢的错误。感谢任何帮助。

最佳答案

您可以使用 DatetimeIndex indexer_between_time方法,所以这里使用它的一个技巧是将系列/列传递给 DatetimeIndex 构造函数:

from datetime import time

# s is your datetime64 column

In [11]: pd.DatetimeIndex(s).indexer_between_time(time(10), time(12))
Out[11]:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])

这里获取的是10到12(含*)之间的时间位置,所以用iloc来过滤:

In [12]: s.iloc[pd.DatetimeIndex(s).indexer_between_time(time(10), time(12))]
Out[12]:
1 2013-12-19 11:34:23.037000
2 2013-12-19 11:34:23.050000
3 2013-12-19 11:34:23.067000
4 2013-12-19 11:34:23.067000
5 2013-12-19 11:34:23.067000
6 2013-12-19 11:34:23.067000
7 2013-12-19 11:34:23.067000
8 2013-12-19 11:34:23.067000
9 2013-12-19 11:34:23.080000
10 2013-12-19 11:34:23.080000
11 2013-12-19 11:34:23.080000
12 2013-12-19 11:34:23.080000
13 2013-12-19 11:34:23.080000
14 2013-12-19 11:34:23.080000
15 2013-12-19 11:34:23.097000
16 2013-12-19 11:34:23.097000
17 2013-12-19 11:34:23.097000
18 2013-12-19 11:34:23.097000
19 2013-12-19 11:34:23.097000
Name: timestamp, dtype: datetime64[ns]

* include_startinclude_endindexer_between_time 的可选 bool 参数。

关于python - 在特定时间范围内选择观察 datetime64[ns] 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251219/

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