【发布时间】:2024-01-19 23:20:01
【问题描述】:
问题
我有一个保存时间序列的 mysql 数据库(对于每个客户和客户帐户余额的日期)。每周可能有多个值。可以假定日期列是一个有效且完整的日期时间对象。每个客户和每周可能有多个条目,但我想每周只保留一个值。 我查询数据库并从中构造相应的 pandas 数据框。
约束:
- 大多数情况下,每周的星期二都会有值
- 有时星期二可能没有值,然后取该周的下一个可能值
+-------------+------------+---------+
| customer_id | date | balance |
+-------------+------------+---------+
| 01 | 01.01.2020 | 50$ |
| 02 | 01.01.2020 | 40$ |
| 01 | 02.01.2020 | 40$ |
| 01 | 08.01.2020 | 60$ |
+-------------+------------+---------+
解决方案
一个解决方案包含:
- 每周为每位客户提供一个值(同行周/天没有重复值)
- 该值是最早的可能值
在示例中,这将是这样的:
+-------------+------------+---------+
| customer_id | date | balance |
+-------------+------------+---------+
| 01 | 01.01.2020 | 50$ |
| 02 | 01.01.2020 | 40$ |
| 01 | 08.01.2020 | 60$ |
+-------------+------------+---------+
如何解决/问题
我可以迭代数据框,并为每个 id 和周选择一周内的第一个值并将其保存到新的 df / 删除所有其他条目。 这似乎相当低效。是否有更适合熊猫的解决方案,或者我什至可以改进 mysql 查询以根据需要过滤掉数据?
【问题讨论】:
标签: python pandas time-series