熊猫-在不使用日期索引的情况下填写熊猫行之间的缺失日期

时间:2019-03-07 17:46:16

标签: python pandas datetime dataframe reindex

我有一个完整的数据集,其中包含在被接受之前会经历各种状态的项目,许多项目会不止一次地通过同一状态,我想查找某项产品在状态中所花费的平均时间,如果重新计算则从0重新开始在以后输入相同的状态)。具体来说,我希望能够选择一个时间点,并查看在该状态下花费的平均总时间。

开始使用reindex和填充选项时,这似乎很简单,该选项将中间日期/缺失日期与项目在该日期具有的值一起填充。但是我有很多项目和更改是在同一天发生的,所以我不确定是否可以为此使用日期索引。

因此,我认为我的问题与this one不同,因为我有多个数据点处于同一时间点,所以我的问题与here不同。除非少了我的误解,否则我不能为此使用日期索引吗?我的时间在sec级别以下,也许我可以在此级别使用日期索引,但是那时我将拥有一个庞大的数据集。还有其他方法吗?

我在这里有一个示例数据集:

   id Old Status New Status           Status In           Status Out
0  44      Draft     Submit 2018-10-24 08:12:02  2018-10-24 18:12:02
1  44     Sumbit     Return 2018-10-24 18:12:02  2018-11-24 08:56:02
2  44     Return     Reject 2018-11-24 08:56:02                  NaN
3  88     Submit     Accept 2018-10-24 10:12:02  2018-10-29 13:17:02
4  88     Accept    Develop 2018-10-29 13:17:02                  NaN
5  90      Draft     Submit 2018-12-30 08:43:12                  NaN
6  95      Draft     Reject 2019-01-24 06:12:02                  Na

Status OutNaN的地方,那么它目前处于该状态。

以项目44为例,在第0行和第1行之间,我希望在10月24日至11月24日之间的所有日期都等于在0行上。

我的数据在下面也采用这种格式,实际上可能更易于使用。

df1 = pd.DataFrame({'id':[44,44,44,88,88,90,95],
               'Old Status': ['Draft','Submit','Return','Submit','Accept',
               'Draft','Draft'],
               'New Status' : ['Submit','Return','Reject','Accept','Develop',
                              'Submit','Reject'],
                              'Datetime': ['2018-10-24 08:12:02',
                              '2018-10-24 18:12:02', '2018-11-24 08:56:02',
                              '2018-10-24 10:12:02','2018-10-29 13:17:02',
                              '2018-12-30 08:43:12', '2019-01-24 06:12:02']
                              }, columns = ['id','Old Status', 'New Status', 'Datetime'])
df1['Datetime'] = pd.to_datetime(df1['Datetime'])                              
df1
   id Old Status New Status            Datetime
0  44      Draft     Submit 2018-10-24 08:12:02
1  44     Sumbit     Return 2018-10-24 18:12:02
2  44     Return     Reject 2018-11-24 08:56:02
3  88     Submit     Accept 2018-10-24 10:12:02
4  88     Accept    Develop 2018-10-29 13:17:02
5  90      Draft     Submit 2018-12-30 08:43:12
6  95      Draft     Reject 2019-01-24 06:12:02

编辑: 因此,为了确认一下,我的数据集有278个重复的日期索引时间降到了“ s”级别。因此,除非我进入'ns'级别,否则似乎无法使用日期索引方法,因为出现错误ValueError: cannot reindex from a duplicate axis

使用ns并不理想,因为仅容纳278个,就会多创建几百万行。

如何在不使用日期索引的情况下添加缺少日期的新行?

0 个答案:

没有答案