python - 如何在熊猫系列中获取时间范围内的行掩码?
问题描述
我有一个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的方式做到这一点?
解决方案
如果你想要一个面具,应该这样做:
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 SDate
,dt是 datetimelike 属性的访问器对象,例如小时。
推荐阅读
- javascript - HTML/JS:如果输入 Y 已填充,则忽略必需的输入 X
- php - Laravel 添加查询参数查看
- entity-framework - 未应用任何迁移。数据库已经是最新的。完毕
- jhipster - jhipster 使用具有相同身份验证的 rest api 和 rest 模板
- ionic-framework - 如何使用 ionic 为我的网站创建一个简单的 webview
- omnet++ - 如何从 OMNeT++ 中的结果分析生成图形
- python-3.x - MacOS 上的 os.path.getsize 与 du -sh
- c# - sql 表跟踪器,不能使用触发器或 sql 依赖项
- php - 休息时从 Drupal 8 注销
- c# - SqlBulkCopy.WriteToServer 抛出异常“列不允许为空”