python - 如何在数据框python中捕获每天的最后一个快照
问题描述
我有一个这样的数据框:
A B C
2015-01-01 00:00:00 597.5259 376.1830 a
2015-01-01 00:00:00 461.2014 244.0453 a
2015-01-01 00:00:00 283.9003 166.5772 b
2015-01-01 09:04:00 93.5099 50.7761 a
2015-01-01 09:04:00 1.1559 0.2784 b
2015-01-01 09:31:00 95.0285 29.1006 a
2015-01-01 09:31:00 241.8822 120.1049 b
2015-01-01 12:16:00 363.8040 196.0568 a
2015-01-01 14:04:00 438.2264 274.3733 a
2015-01-01 16:30:00 456.3396 330.6650 a
2015-01-01 16:30:00 368.3211 0.2617 a
2015-01-01 16:30:00 456.3396 0.1939 b
2015-01-02 09:28:00 241.8822 120.1049 b
2015-01-02 09:28:00 212.3111 389.2911 b
2015-01-02 10:27:00 363.8040 196.0568 a
2015-01-02 13:02:00 438.2264 274.3733 a
2015-01-02 16:27:00 456.3396 330.6650 a
2015-01-02 16:27:00 368.3211 0.2617 a
2015-01-02 16:27:00 456.3396 0.1939 b
... ... ... ...
我想获取数据框中每一天的最后一个快照,即
A B C
2015-01-01 16:30:00 456.3396 330.6650 a
2015-01-01 16:30:00 368.3211 0.2617 a
2015-01-01 16:30:00 456.3396 0.1939 b
2015-01-02 16:27:00 456.3396 330.6650 a
2015-01-02 16:27:00 368.3211 0.2617 a
2015-01-02 16:27:00 456.3396 0.1939 b
我是python的新手,我的思路是定义一个函数来获取时间戳列表并选择列表的最后一个元素。但这对我来说非常复杂,我不知道如何执行。
我试过
df = df.groupby(df.index).last()
或者
df = df.groupby(df.index.timestamp).apply(lambda x: x.iloc[[0, -1]])
这些方法不起作用,因为每天最后一个快照的行数可能不同。你能帮我吗?非常感谢。
解决方案
您可以按天分组并与最后一个索引进行比较:
print (df.groupby(pd.Grouper(freq="D"), as_index=False).apply(lambda d: d[d.index==d.index[-1]]))
或使用比较transform
:
print (df[df.index==df.reset_index().groupby(pd.Grouper(key="index", freq="D"))["index"].transform("max")])
A B C
0 2015-01-01 16:30:00 456.3396 330.6650 a
2015-01-01 16:30:00 368.3211 0.2617 a
2015-01-01 16:30:00 456.3396 0.1939 b
1 2015-01-02 16:27:00 456.3396 330.6650 a
2015-01-02 16:27:00 368.3211 0.2617 a
2015-01-02 16:27:00 456.3396 0.1939 b
推荐阅读
- php - How to get the number of rows in database based on few parameters
- angular - 按下退出按钮时防止关闭 Angular Material 对话框,但单击背景时允许关闭
- javascript - 在Javascript中按日期过滤数组
- jmeter - JMeter 并行控制器有两个事务控制器问题
- c# - 将颜色绑定到单例
- java - 为什么不@Autovired 会话工厂?Java 休眠弹簧
- java - 使用 Spring、JPA 和 Hibernate 的通用 DAO 设置
- excel - Excel VBA用户表单:当我更改数据输入的第一列时数据覆盖
- reactjs - 使用 reactjs 将模式框推送到当前页面
- django - 如何呈现 POST 并使其显示在另一个页面上?以 Django 形式