【发布时间】:2019-07-01 01:08:47
【问题描述】:
CustID UsageDate EnergyConsumed
0 17111 2018-01-01 00:00:00 1.095
1 17111 2018-01-01 01:00:00 1.129
2 17111 2018-01-01 02:00:00 1.165
3 17111 2018-01-01 03:00:00 1.833
4 17111 2018-01-01 04:00:00 1.697
5 17111 2018-01-01 05:00:00 1.835
missing data point 1
6 17111 2018-01-01 07:00:00 1.835
7 17112 2018-01-01 00:00:00 1.095
8 17112 2018-01-01 01:00:00 1.129
missing data point 1
9 17112 2018-01-01 03:00:00 1.833
10 17112 2018-01-01 04:00:00 1.697
11 17112 2018-01-01 05:00:00 1.835
对于每个客户,我都有每小时的数据。但是,两者之间缺少一些数据点。我想检查使用日期的最小值和最大值,并在该时间间隔内填写缺失的使用日期(所有值都是每小时),并将 EnergyConsumed 设为零。我以后可以使用 ffill 或 backfill 来解决这个问题。
并非每个客户的最大 UsageDate 是 2018-01-31 23:00:00。所以我们只想将系列延长到每个客户的最大日期。
缺少的点1被替换为
17111 2018-01-01 06:00:00 0
缺少的点2被替换为
17112 2018-01-01 02:00:00 0
我的主要问题是如何找到每个客户的最小和最大日期,然后生成日期间隔。
我尝试过按日期索引和重新采样,但没有帮助我找到解决方案。
另外,我想知道是否有一种方法可以直接查找上述模式中缺失值的客户 ID。我的数据非常大,@Vaishali 提供的解决方案计算量很大。任何输入都会有所帮助!
【问题讨论】:
-
只是为了澄清,数据是否按每个客户的小时费率计算?当你说
max和min时,不应该是previous和next吗?从你的例子 1 中,对我来说最大是2018-01-01 07:00:00和最小2018-01-01 00:00:00 -
是的,数据预计按每个客户的小时费率计算。最大值和最小值不是上一个和下一个。
标签: python python-3.x pandas date datetime