Python 筛选出熊猫每天的特定时间
给定一个数据集,其中每行代表一个小时样本,即每天有24个条目,索引集如下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
...
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
这里的答案显示了如何过滤