python - 在给定日期仅保留列中第一次出现的数据,而不删除熊猫中的其他出现
问题描述
我对熊猫很陌生,所以请耐心等待。我有几年的 1 分钟间隔明智数据时间框架。每行都有一Long signal
列。我的数据框索引是日期时间列。
为简单起见,我们只取两天的数据。
Long Signal
Date
2008-01-01 09:55 0
2008-01-01 09:56 1
2008-01-01 09:57 0
...............
2008-01-01 03:28 0
2008-01-01 03:29 1
2008-01-01 03:30 1
2008-01-02 09:55 0
2008-01-02 09:56 0
2008-01-02 09:57 1
...............
2008-01-02 03:28 0
2008-01-02 03:29 1
2008-01-02 03:30 1
我正在尝试将其转换为数据框,如下所示,
Long Signal
Date
2008-01-01 09:55 0
2008-01-01 09:56 1
2008-01-01 09:57 0
...............
2008-01-01 03:28 0
2008-01-01 03:29 0
2008-01-01 03:30 0
2008-01-02 09:55 0
2008-01-02 09:56 0
2008-01-02 09:57 1
...............
2008-01-02 03:28 0
2008-01-02 03:29 0
2008-01-02 03:30 0
那就是我只想保留第一次出现Long signal
并在同一天的剩余出现中填充 0。那是因为在任何给定的一天Long signal
最多只会出现一次值 1。尝试过drop_duplicate
但没有运气。我将不胜感激任何帮助。
编辑 1:
我想保留第一个Long signal
为 1 的时间信息。在我的情况下,它是这一天和2008-01-01
它是。换句话说,我希望我的数据本身在 1 分钟的时间间隔内,同时仅在.09:56
2008-01-02
09:57
1
Long signal
解决方案
要仅保留第一次出现Long Signal
并用 0 填充其余的,您可以使用loc
、groupby
withdt.day
和的组合idxmax()
。
该idxmax()
函数用于获取最大值的行标签,如果多个值等于最大值(即在您的情况下为 1),则返回具有该值的第一个行标签,因此非常适合您的需求。
为了显示:
df['Long Signal'] = df['Long Signal'].loc[df.groupby([df.Date.dt.day])['Long Signal'].idxmax()]
df['Long Signal'].fillna(0,inplace=True)
会回来:
Out[134]:
Date Long Signal
0 2008-01-01 09:55:00 0.0
1 2008-01-01 09:56:00 1.0
2 2008-01-01 09:57:00 0.0
3 2008-01-01 03:28:00 0.0
4 2008-01-01 03:29:00 0.0
5 2008-01-01 03:30:00 0.0
6 2008-01-02 09:55:00 0.0
7 2008-01-02 09:56:00 0.0
8 2008-01-02 09:57:00 1.0
9 2008-01-02 03:28:00 0.0
10 2008-01-02 03:29:00 0.0
11 2008-01-02 03:30:00 0.0
要保留第一个 Long 信号为 1 的时间信息,您可以简单地使用:
df.loc[df['Long Signal']==1]['Date']
1 2008-01-01 09:56:00
8 2008-01-02 09:57:00
但我不能 100% 确定这是您第二部分所需要的,因为它没有在您想要的输出中展示。
推荐阅读
- hadoop - 在集群失败的情况下,snakebite 是否会处理重试?
- android - 我怎样才能让 BLE 应用程序一直处于活动状态?
- java - 当所有 bean 都标记为 Lazy 时,Spring Boot 应用程序无法启动,因为它找不到错误通道
- .net - 如何在 Visual Studio 2017 中指定 -highentropyva C# 编译器选项?
- apache-kafka - 可以使用 Apache Kafka“无限保留策略”作为具有 CQRS 的事件源系统的基础吗?
- angular - 提高新 Angular App Lighthouse 分数的实用指南?
- php - 使用生成的 QRCode(png) 和 JSPDF 在服务器上保存 PDF
- teamcity - TeamCity Build for release/* 以便获取最新的发布版本
- javascript - 根据用户角色隐藏导航栏
- php - 从多维数组中获取键值不起作用