如何使用 at_time() 方法从 pandas.series 对象中选择值?

pandasserver side programmingprogramming更新于 2025/7/10 5:07:17

Pandas Series.at_time() 方法用于选择给定序列对象在特定时间点的值。at_time() 方法接受一个时间参数,并返回一个包含所选值的序列对象。

如果给定序列对象的索引中不存在指定的时间,at_time 方法将返回一个空的序列对象;如果输入序列对象的索引中没有 DatetimeIndex,则会引发 TypeError。

让我们创建一个带有 Datetime Index 的 pandas 序列对象,并使用 Series.at_time() 方法获取值。如果指定的时间存在于给定输入序列对象的索引中,则它将返回包含这些行值的序列对象。

示例 1

import pandas as pd

# 创建索引
index = pd.date_range('2021-01-1', periods=10, freq='6H')

# 创建带有日期时间索引的 pandas 序列
series = pd.Series([1,2,3,4,5,6,7,8,9,10], index=index)

print(series)

# 选择值
print("Selecting values:", series.at_time("6:00"))

解释

在以下示例中,序列是使用 Pandas DateTime 索引和一些整数值列表创建的。之后,我们应用 at_time() 方法获取"6:00"时刻的值。

输出

2021-01-01 00:00:00  1
2021-01-01 06:00:00  2
2021-01-01 12:00:00  3
2021-01-01 18:00:00  4
2021-01-02 00:00:00  5
2021-01-02 06:00:00  6
2021-01-02 12:00:00  7
2021-01-02 18:00:00  8
2021-01-03 00:00:00  9
2021-01-03 06:00:00 10
Freq: 6H, dtype: int64

Selecting values:
2021-01-01 06:00:00  2
2021-01-02 06:00:00  6
2021-01-03 06:00:00 10
Freq: 24H, dtype: int64

在此示例中,我们已成功从给定的系列对象中选择了 3 行,这 3 行的时间为"6:00"小时。

示例 2

import pandas as pd

# 创建索引
index = pd.date_range('2021-01-1', periods=10, freq='30T')

# 创建带有日期时间索引的 pandas Series
series = pd.Series([1,2,3,4,5,6,7,8,9,10], index=index)

print(series)

# 选择值
print("Selecting values:", series.at_time("00:10:00"))

解释

同样的方式,我们创建了一个带有 pandas DateTime 索引的 pandas 对象。之后,我们尝试获取"00:10:00"时间序列中的值。

输出

2021-01-01 00:00:00  1
2021-01-01 00:30:00  2
2021-01-01 01:00:00  3
2021-01-01 01:30:00  4
2021-01-01 02:00:00  5
2021-01-01 02:30:00  6
2021-01-01 03:00:00  7
2021-01-01 03:30:00  8
2021-01-01 04:00:00  9
2021-01-01 04:30:00 10
Freq: 30T, dtype: int64

Selecting values:
Series([], Freq: 30T, dtype: int64)

以下示例的输出为空的系列对象,这是由于请求时间在给定系列对象的索引中不可用。


相关文章