使用开始和结束时间戳填充Pandas多索引中的空白

时间:2017-06-01 13:02:40

标签: python pandas

来自以下的DataFrame:

                                                   value    fill
start                     end
2016-07-15 00:46:11       2016-07-19 03:35:34      1        a
2016-08-21 07:55:31       2016-08-22 18:24:49      2        b
2016-09-26 03:09:12       2016-09-26 06:06:12      3        c

我正在寻找一种方法来添加填充空白的行,每个新行都将现有上一个相邻行的fill列作为新value

上一个示例的输出将是:

                                                   value 
start                     end
2016-07-15 00:46:11       2016-07-19 03:35:34      1
2016-07-19 03:35:34       2016-08-21 07:55:31      a
2016-08-21 07:55:31       2016-08-22 18:24:49      2
2016-08-22 18:24:49       2016-09-26 03:09:12      b
2016-09-26 03:09:12       2016-09-26 06:06:12      3

一种矢量化方法,避免在纯Python中循环使用DataFrame,因为我必须处理大量的行,所以非常优先考虑。

1 个答案:

答案 0 :(得分:2)

使用DataFrame.stack()方法:

In [189]: df.stack().reset_index(level=2, drop=True).to_frame('value')
Out[189]:
                                        value
start               end
2016-07-15 00:46:11 2016-07-19 03:35:34     1
                    2016-07-19 03:35:34     a
2016-08-21 07:55:31 2016-08-22 18:24:49     2
                    2016-08-22 18:24:49     b
2016-09-26 03:09:12 2016-09-26 06:06:12     3
                    2016-09-26 06:06:12     c