python - 如何过滤数据框以便在特定时间每天出现一次
问题描述
我的数据集有一个 datetime 列,该列在很多天中的每个小时都有一个条目。例如:
123412,2020-03-26 12:00,
123412,2020-03-27 12:00,
123412,2020-03-27 09:00,
123412,2020-03-27 09:00,
123412,2020-03-27 15:00,
123412,2020-03-26 15:00,
123412,2020-03-27 11:00,
123412,2020-03-27 12:00,
该示例没有排序,但正如我所说,一天中的每个小时都有一个条目。
我想过滤这些数据的方法是,例如,采取 datetime 2020-03-26 12:00
。然后,过滤器将返回以下行:
- 2020-03-26 12:00
- 2020-03-25 12:00
- 2020-03-24 12:00
等等。
我试过Grouper
这样的df2 = df2.groupby(pd.Grouper(key=DATETIME, freq='D'))
,但没有奏效。
我怎样才能做到这一点?谢谢
解决方案
boolean indexing
您可以通过和过滤日期时间Series.dt.time
:
print (df)
a date b
0 123412 2020-03-26 12:00:00 NaN
1 123412 2020-03-27 12:00:00 NaN
2 123412 2020-03-27 09:00:00 NaN
3 123412 2020-03-27 09:00:00 NaN
4 123412 2020-03-27 15:00:00 NaN
5 123412 2020-03-26 15:00:00 NaN
6 123412 2020-03-27 11:00:00 NaN
7 123412 2020-03-27 12:00:00 NaN
d = '2020-03-26 12:00'
df = df[df['date'].dt.time.eq(pd.Timestamp(d).time())]
print (df)
a date b
0 123412 2020-03-26 12:00:00 NaN
1 123412 2020-03-27 12:00:00 NaN
7 123412 2020-03-27 12:00:00 NaN
如果只想要唯一的日期时间:
d = '2020-03-26 12:00'
df = df.drop_duplicates('date')
df = df[df['date'].dt.time.eq(pd.Timestamp(d).time())]
print (df)
a date b
0 123412 2020-03-26 12:00:00 NaN
1 123412 2020-03-27 12:00:00 NaN
推荐阅读
- javascript - 使用 HTML 选择下拉菜单更新 iframe 的 src 路径
- python - 使用变量的科学记数法
- pdf - 如何在 DITA 输出中配置 PDF 初始视图设置
- php - 通过php显示sqlsrv中的所有数据库
- javascript - 如何使用不和谐 oauth 获取公会信息?
- karate - Karate Driver interaction with iframe
- ios - 在 UICollectionView 中使用动态大小的单元格重新排序自定义布局
- java - 将系统变量传递给部署到 tomcat 的应用程序
- c# - 如何从一个类获取泛型类型到另一个c#
- continuous-integration - 雪花数据仓库最佳 CI / CD 工具的建议