如何获取 pandas DataFrame 的最后 10 分钟

在我们的上一篇文章中,我们展示了如何从 pandas DataFrame 中减去 5 分钟:

example.py
pd.Timestamp('now') - pd.Timedelta(10, 'minutes')

我们还可以使用此知识来获取 pandas DataFrame 的最后 10 分钟。在我们的示例中,我们假设 df[“Timestamp”] 包含时间戳。首先,我们使用以下命令获取数据集中的最后一个时间戳

example.py
# 如果时间戳是 DataFrame 的索引,使用此命令
last_ts = df.index.iloc[-1]

or

example.py
# ...或者如果时间戳在列中,使用此命令
last_ts = df["Timestamp"].iloc[-1]

接下来,我们通过从 last_ts 减去 10 分钟来定义应考虑的第一个时间戳:

example.py
first_ts = last_ts - pd.Timedelta(10, 'minutes')

现在我们可以使用以下命令过滤 DataFrame

example.py
# 如果 Timestamp 在列中,使用此命令
filtered_df = df[df["Timestamp"] >= first_ts]

or

example.py
# 如果 Timestamp 是 DataFrame 的索引,使用此命令
filtered_df = df[df.index >= first_ts]

通过过滤,我们不需要 DataFrame 排序,原始顺序将保持不变。

完整示例:

此示例从我们上一篇关于如何创建 pandas 时间序列 DataFrame 示例数据集的文章中加载预构建的时间序列示例数据集。代码加载该数据集(长 1 秒)并从中取最后 0.5 秒。

example.py
import pandas as pd

# 加载示例数据集
df = pd.read_csv("https://techoverflow.net/datasets/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)

# 如果时间戳是 DataFrame 的索引,使用此命令
last_ts = df.index[-1]

first_ts = last_ts - pd.Timedelta(0.5, 'seconds')

filtered_df = df[df.index >= first_ts]

# 绘制结果
filtered_df.plot()

Check out similar posts by category: Pandas, Python