来自以下的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,因为我必须处理大量的行,所以非常优先考虑。
答案 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