gpt4 book ai didi

python - Pandas 时间序列 : Keep only one value peer week and id

转载 作者:行者123 更新时间:2023-12-03 02:28:20 24 4
gpt4 key购买 nike

问题

我有一个 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/删除所有其他条目。这看起来效率很低。是否有更适合 pandas 的解决方案,或者我什至可以改进 mysql 查询以根据需要过滤掉数据?

最佳答案

您可以将日期更改为句点,然后分组:

df.groupby([df.date.dt.to_period('W-TUE'), 
df['customer_id']]).head(1)

输出:

  customer_id       date  balance
0 01 2020-01-01 50
1 02 2020-01-01 40
3 01 2020-01-08 60

关于python - Pandas 时间序列 : Keep only one value peer week and id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60154530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com