Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按时间范围选择数据帧行_Python_Pandas - Fatal编程技术网

Python 按时间范围选择数据帧行

Python 按时间范围选择数据帧行,python,pandas,Python,Pandas,我需要从特定行中选择+-1秒的行(标记为要拾取) 我可以用循环来做,但我在寻找更优雅的方式 import pandas as pd import numpy as np N = 1000 tidx = pd.date_range('2019-07-01 09:30:00', periods=N, freq='S') np.random.seed(3) data = np.random.randn(N) ts = tidx + pd.to_timedelta(pd.np.random.randn(

我需要从特定行中选择+-1秒的行(标记为要拾取)

我可以用循环来做,但我在寻找更优雅的方式

import pandas as pd
import numpy as np
N = 1000
tidx = pd.date_range('2019-07-01 09:30:00', periods=N, freq='S')
np.random.seed(3)
data = np.random.randn(N)
ts = tidx + pd.to_timedelta(pd.np.random.randn(N), unit='s')

df = pd.DataFrame({'Time': ts, 'to_pick': pd.np.random.randn(N) > 0.98, 'start': ts - pd.to_timedelta(1, 's'), 'end': ts + pd.to_timedelta(1, 's')})
df.loc[~df['to_pick'], 'start'] = pd.np.nan
df.loc[~df['to_pick'], 'end'] = pd.np.nan
我在找像这样的东西

 df['Time'].between(df['start', df['end'])

这将有助于组合条件

如果我理解正确,您希望选择
时间
介于
开始
结束
之间的行,当
选择=真时

start = df.query('to_pick')['start'].values
end = df.query('to_pick')['end'].values
t = df['Time'].values[:, None]

df.loc[np.any((start <= t) & (t <= end), axis=1)]
start=df.query('to_pick')['start'].值
end=df.query('to_pick')['end'].值
t=df['Time']。值[:,无]

df.loc[np.any((开始)这可能有助于什么是df[start]和df[end]这很好!我需要了解这些线是如何工作的t=df['Time'].values[:,None](开始)它使用numpy数组广播。如果需要我详细说明,请告诉我