在指定的时间片上对pandas进行切片

Axe*_*xel 2 python indexing datetime pandas

我正在尝试在指定的时间戳切pandas.Series。从其他SO问题中,我得到了以下工作流程:

import pandas as pd
x = ... # some time data
y = ... # some value data

lower_limit_x = pd.to_datetime(x.index) >= pd.to_datetime('2019-01-23 20:59:04')
upper_limit_x = pd.to_datetime(x.index) <= pd.to_datetime('2019-01-23 21:37:44')

lower_limit_y = pd.to_datetime(y.index) >= pd.to_datetime('2019-01-23 20:59:04')
upper_limit_y = pd.to_datetime(y.index) <= pd.to_datetime('2019-01-23 21:37:44')

mask_x = lower_limit_x & upper_limit_x
mask_y = lower_limit_y & upper_limit_y

sliced_x = x[mask_x]
sliced_y = y[mask_y]
Run Code Online (Sandbox Code Playgroud)

但是,如果我从以下范围开始的数据集开始。2019-01-23 20:45至2019-01-23 04:00:

原始数据

结果数据似乎为空。如果我做

sliced_y.values
Run Code Online (Sandbox Code Playgroud)

结果为空。

如何通过时间戳成功切片数据?

jpp*_*jpp 5

您可以创建一个数据loc框,然后使用acessor:

df = pd.DataFrame(y.values, index=x.values)

sliced_df = df.loc['2019-01-23 20:59:04': '2019-01-23 21:37:44']
Run Code Online (Sandbox Code Playgroud)

sliced_df现在是单个数据框,您可以按以下方式访问xy

sliced_times = sliced_df.index
sliced_values = sliced_df.iloc[:, 0].values
Run Code Online (Sandbox Code Playgroud)