微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

过滤每个日期的最大记录数的时间戳,并将过滤后的行提取到另一个 df

如何解决过滤每个日期的最大记录数的时间戳,并将过滤后的行提取到另一个 df

我有一个带有时间戳列、另一个日期列和价格列的数据框。 时间戳列更像是特定小时(上午 10 点到上午 11 点之间)的每 5 分钟数据,这些数据正在拉出。 例如:

Timestamp               EndDate             Price  
2021-01-01 10:00:00   2021-06-30 08:00:00    100
2021-01-01 10:00:00   2021-09-30 08:00:00    105
2021-01-01 10:05:00   2021-03-30 08:00:00    102
2021-01-01 10:05:00   2021-06-30 08:00:00    100
2021-01-01 10:05:00   2021-09-30 08:00:00    105
2021-01-01 10:10:00   2021-03-30 08:00:00    102
2021-01-01 10:10:00   2021-06-30 08:00:00    100

2021-01-02 10:00:00   2021-06-30 08:00:00    100
2021-01-02 10:00:00   2021-09-30 08:00:00    105
2021-01-02 10:00:00   2021-03-30 08:00:00    102
2021-01-02 10:00:00   2021-06-30 08:00:00    100
2021-01-02 10:05:00   2021-09-30 08:00:00    105
2021-01-02 10:05:00   2021-03-30 08:00:00    102
2021-01-02 10:05:00   2021-06-30 08:00:00    100

对于每 5 分钟的快照,有些最终有 3 条记录,有些是 2 条记录,有些是 4 条记录。 在那个小时(或一天)内,我想提取一组记录,以便该组包含最大记录数,因此对于上面示例中的 1 月 1 日,它应该提取 1 月 1 日的 10:05 数据,对于 1 月 2 日它应该拉出 10:00 的数据。如果有多个集合的最大记录数相同,则可以拉出当天的最晚时间。

不确定我如何有效地做到这一点,也许使用计数?

解决方法

你可以拆分 timstap 以便更好地使用,所以我这样做了:

import numpy as np
import pandas as pd

filename=(r'C:xxxxxx\Example2.xlsx') 
df0=pd.read_excel(filename)
df0['new_date'] = [d.date() for d in df0['Timestamp']]
df0['new_time'] = [d.time() for d in df0['Timestamp']]

这产生: enter image description here

然后我们可以使用 groupby() 和 thn apply() 来计算值如下:

df = df0.groupby('new_date')['new_time'].apply(lambda x: 
x.value_counts().index[0]).reset_index()

产生: enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?