How to get last 10 minutes of a pandas DataFrame
In our previous post we showed how to subtract 5 minutes from a pandas DataFrame:
pd.Timestamp('now') - pd.Timedelta(10, 'minutes')
We can also use this knowledge in order to get the last 10 minutes of a pandas DataFrame
. In our example, we assume that df[“Timestamp”] contains the timestamp. First, we get the last timestamp in the dataset using
# Use this if the timestamp is the index of the DataFrame
last_ts = df.index.iloc[-1]
or
# ... or use this if the timestamp is in a colum
last_ts = df["Timestamp"].iloc[-1]
Next, we define the first timestamp that shall be considered by subtracting 10
minutes from last_ts
:
first_ts = last_ts - pd.Timedelta(10, 'minutes')
Now we can filter the DataFrame
using
# Use this if the Timestamp is in a column
filtered_df = df[df["Timestamp"] >= first_ts]
or
# Use this if the Timestamp is the index of the DataFrame
filtered_df = df[df.index >= first_ts]
By filtering, we don’t need the DataFrame
to be sorted and the original order will be maintained.
Full example:
This example loads our pre-built time series example dataset from our previous post How to create pandas time series DataFrame example dataset. The code loads that dataset (which is 1 second long) and takes the last 0.5
seconds from it.
import pandas as pd
# Load example dataset
df = pd.read_csv("https://techoverflow.net/datasets/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)
# Use this if the timestamp is the index of the DataFrame
last_ts = df.index[-1]
first_ts = last_ts - pd.Timedelta(0.5, 'seconds')
filtered_df = df[df.index >= first_ts]
# Plot the result
filtered_df.plot()