【发布时间】:2018-06-21 07:25:51
【问题描述】:
我正在尝试将 Dataframe 的单行拆分为两行。在 Dataframe 开始和结束列可用。我想根据条件拆分行。
我有一个如下数据框:
symbol,start,end,size
ABC,2015-08-27 18:00:00,2015-08-28 05:00:00,12
ABC,2015-11-20 02:00:00,2015-11-20 06:00:00,5
ABC,2016-01-22 03:00:00,2016-01-22 06:00:00,4
PQR,2016-02-12 02:00:00,2016-02-12 06:00:00,5
PQR,2016-02-12 22:00:00,2016-02-13 03:00:00,6
PQR,2016-02-12 02:00:00,2016-02-12 07:00:00,6
条件:
- 如果开始和结束是同一天,则无需执行任何操作。
- 如果开始和结束日期不同,则需要将其分成两行。
示例:让我们考虑如下行:
PQR,2016-02-12 22:00:00,2016-02-13 03:00:00,6
在上面的行中,开始包含第 12 天,结束包含第 13 天,所以需要将其分成两行,如下所示:
PQR,2016-02-12 22:00:00,2016-02-12 23:00:00,2
PQR,2016-02-12 00:00:00,2016-02-13 03:00:00,4
如果该行包含三天,例如从 12 日开始到 14 日结束,则需要将其分成三行。
预期输出为:
symbol,start,end,size
ABC,2015-08-27 18:00:00,2015-08-27 23:00:00,6
ABC,2015-08-28 00:00:00,2015-08-28 05:00:00,6
ABC,2015-11-20 02:00:00,2015-11-20 06:00:00,5
ABC,2016-01-22 03:00:00,2016-01-22 06:00:00,4
PQR,2016-02-12 02:00:00,2016-02-12 06:00:00,5
PQR,2016-02-12 22:00:00,2016-02-12 23:00:00,2
PQR,2016-02-12 00:00:00,2016-02-13 03:00:00,4
PQR,2016-02-12 02:00:00,2016-02-12 07:00:00,6
【问题讨论】:
-
第三个代码块第一行的“23:00:00”是从哪里来的?我在原始数据中没有看到它。同一代码块第二行中的“00:00:00”也是如此。您是否忘记命名另一个条件?
-
@sudonym- 这是几个小时。在一天之内,小时以 23 结尾并以 00 开头,需要按天拆分此数据。
-
我明白了,但是,您的输入数据中不存在小时“23:00:00”。 “00:00:00”也是如此。这意味着您必须有一个规则来确定这个小时。您的代码中不存在此规则。因此(再次)问题:如何知道其他行的时间?
-
@sudonym 我的猜测是,您必须想象开始时间(00:00)和结束时间,就好像他们将分钟和秒设置为 59:59
-
面对模棱两可,拒绝猜测的诱惑:)