首页 > 解决方案 > 如何在熊猫系列中获取时间范围内的行掩码?

问题描述

我有一个pandas DataFrame名为的日期列SDate,我想找到SDate小时在下午 2 点到 4 点之间的行,例如:

d=pd.read_csv("data.csv",parse_dates=['SDate'])
indices=np.nonzero(d.SDate.hour>=2&d.SDate.hour<=4)[0]

但这不是那样的。如何以最熊猫和pythonic的方式做到这一点?

标签: pythonpandas

解决方案


如果你想要一个面具,应该这样做:

import pandas as pd

df = pd.DataFrame(data=pd.date_range(start='1/1/2018', end='1/2/2018', freq='H'), columns=['SDate'])
mask = (df.SDate.dt.hour >= 2) & (df.SDate.dt.hour <= 4)
print(mask.values)

输出

[False False  True  True  True False False False False False False False
 False False False False False False False False False False False False
 False]

在上面的示例中,df 是具有datetime dtype列的 DataFrame SDatedt是 datetimelike 属性的访问器对象,例如小时。


推荐阅读