Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Dataframe - Fatal编程技术网

Python 筛选出熊猫每天的特定时间

Python 筛选出熊猫每天的特定时间,python,pandas,dataframe,Python,Pandas,Dataframe,给定一个数据集,其中每行代表一个小时样本,即每天有24个条目,索引集如下 ... 2020-10-22T20:00:00 2020-10-22T21:00:00 2020-10-22T22:00:00 ... 2020-10-22T20:00:00 2020-10-22T20:00:00 2020-10-22T20:00:00 ... 现在我想过滤掉,这样每天只剩下上午9点到下午3点之间的时间 我知道的唯一方法是迭代数据集并过滤给定条件的每一行,但是这种过滤总是有一些技巧,不涉及显式迭代。im

给定一个数据集,其中每行代表一个小时样本,即每天有24个条目,索引集如下

...
2020-10-22T20:00:00
2020-10-22T21:00:00
2020-10-22T22:00:00
...
2020-10-22T20:00:00
2020-10-22T20:00:00
2020-10-22T20:00:00
...
现在我想过滤掉,这样每天只剩下上午9点到下午3点之间的时间

我知道的唯一方法是迭代数据集并过滤给定条件的每一行,但是这种过滤总是有一些技巧,不涉及显式迭代。

import pandas as pd
#示例数据(字符串)
数据=[f'2020-10-{d:02d}T{h:02d}:00:00'表示范围(24)中的h,表示范围(1,21)中的d]
#DT值系列
ds=pd.to_日期时间(pd.Series(数据),格式=“%Y-%m-%dT%H:%m:%S”)
#按小时过滤

ds_filter=ds[(ds.dt.hour>=9)和(ds.dt.hour您可以使用恰当命名的方法。这仅在数据帧具有
日期时间索引时有效

数据创建

date_index = pd.date_range("2020-10-22T20:00:00", "2020-11-22T20:00:00", freq="H")
values = np.random.rand(len(dates), 1)

df = pd.DataFrame(values, index=date_index, columns=["value"])
print(df.head())
                        value
2020-10-22 20:00:00  0.637542
2020-10-22 21:00:00  0.590626
2020-10-22 22:00:00  0.474802
2020-10-22 23:00:00  0.058775
2020-10-23 00:00:00  0.904070
方法

subset = df.between_time("9:00am", "3:00pm")

print(subset.head(10))
                        value
2020-10-23 09:00:00  0.210816
2020-10-23 10:00:00  0.086677
2020-10-23 11:00:00  0.141275
2020-10-23 12:00:00  0.065100
2020-10-23 13:00:00  0.892314
2020-10-23 14:00:00  0.214991
2020-10-23 15:00:00  0.106937
2020-10-24 09:00:00  0.900106
2020-10-24 10:00:00  0.545249
2020-10-24 11:00:00  0.793243

这里的答案显示了如何过滤