如何从 Pandas Series 中获取特定时间段的值?
Pandas Series 的 `between_time()` 方法用于选择一天中特定时间段的值。`between_time()` 方法接受两个时间参数,并返回包含所选值的 Series 对象。
`between_time` 方法类似于 Pandas Series 对象的 `at_time` 方法,`at_time` 方法选择特定时间的值,而 `between_time` 方法将选择时间段内的值。
如果输入 Series 对象的索引不是 DatetimeIndex,则会引发 TypeError。
默认情况下,两个输入时间 (start_time, end_time) 参数都是包含的,如果要更改此设置,可以使用 `include_start` 和 `include_end` 参数。
示例 1
import pandas as pd # create the index index = pd.date_range('2021-01-1', periods=10, freq='20T') #creating pandas Series with date time index series = pd.Series([1,2,3,4,5,6,7,8,9,10], index=index) print(series) # selecting values by between_time() print("Selecting values:", series.between_time("00:10","1:40"))
解释
在这里,我们使用 Pandas DateTime 索引和一些整数列表创建了一个 pandas.Series 对象。之后,我们应用 `between_time()` 方法来获取“00:10”到“1:40”之间的时间段的值。
如果给定 Series 对象的索引中存在指定的时间,则它将返回一个新的 Series 对象,其中包含具有这些 DateTime 索引的收集值。
输出
2021-01-01 00:00:00 1 2021-01-01 00:20:00 2 2021-01-01 00:40:00 3 2021-01-01 01:00:00 4 2021-01-01 01:20:00 5 2021-01-01 01:40:00 6 2021-01-01 02:00:00 7 2021-01-01 02:20:00 8 2021-01-01 02:40:00 9 2021-01-01 03:00:00 10 Freq: 20T, dtype: int64 Selecting values: 2021-01-01 00:20:00 2 2021-01-01 00:40:00 3 2021-01-01 01:00:00 4 2021-01-01 01:20:00 5 2021-01-01 01:40:00 6 Freq: 20T, dtype: int64
我们收集了“00:10”到“1:40”之间的时间段的值。在此示例中,start_time (“00:10”) 和 end_time (“1:40”) 都包含在内。
示例 2
import pandas as pd # create the index index = pd.date_range('2021-01-1', periods=10, freq='20T') #creating pandas Series with date time index series = pd.Series([1,2,3,4,5,6,7,8,9,10], index=index) print(series) # selecting values by between_time() print("Selecting values:", series.between_time("00:40","1:40", include_start=False,include_end=False))
解释
在下面的示例中,我们通过不包含起始和结束时间来应用 `between_time()` 方法,这是通过向 `include_start` 和 `include_end` 参数提供 False 值来完成的。
输出
2021-01-01 00:00:00 1 2021-01-01 00:20:00 2 2021-01-01 00:40:00 3 2021-01-01 01:00:00 4 2021-01-01 01:20:00 5 2021-01-01 01:40:00 6 2021-01-01 02:00:00 7 2021-01-01 02:20:00 8 2021-01-01 02:40:00 9 2021-01-01 03:00:00 10 Freq: 20T, dtype: int64 Selecting values: 2021-01-01 01:00:00 4 2021-01-01 01:20:00 5 Freq: 20T, dtype: int64
在此示例中,我们已成功从给定的 Series 对象中选择了 2 行,这 3 行的 DateTime 索引时间介于“00:40”和“1:40”之间,这两个时间都不包含在内。