【发布时间】:2020-02-22 14:47:22
【问题描述】:
我有一个 CSV 文件,其中包含时间戳以及关于它是指开始 (I) 还是结束 (F) 的信息。 我想计算开始时间和结束时间之间的持续时间。
我正在尝试将它加载到 pandas,按引用分组,'acao'(说明它是开始还是结束标记),将其拆开,然后使用 fillna() 来获取一张表格我可以计算持续时间。
我正在使用的代码:
data = pd.read_csv(file_path, parse_dates=['time_stamp'])
y = data.sort_values(['referencia','time_stamp'])
y = y.set_index(['referencia','acao'], append=True).time_stamp.unstack('acao')
y = y[['I','F']]
预期结果如下(希望我能够正确格式化表格):
+------------+----------------------------+----------------------------+
| referencia | I | F |
+------------+----------------------------+----------------------------+
| 111 | 2019-10-23 23:26:18.325750 | |
| 111 | | 2019-10-23 23:42:45.719985 |
| 123 | 2019-10-23 22:38:10.434322 | |
| 123 | | 2019-10-23 22:38:19.986666 |
| 123 | 2019-10-23 22:39:08.760218 | |
| 123 | | 2019-10-23 22:39:42.762875 |
| 123 | 2019-10-23 22:40:02.301749 | |
| 123 | | 2019-10-23 22:40:24.000795 |
| 123 | 2019-10-23 23:24:59.687386 | |
| 123 | | 2019-10-26 11:48:07.831072 |
| 133 | 2019-10-23 22:42:14.712779 | |
| 133 | | 2019-10-23 22:42:20.159414 |
| 156 | 2019-10-26 11:47:13.848750 | |
| 156 | | 2019-10-26 11:47:21.289268 |
| 199 | 2019-10-23 22:44:30.502311 | |
| 199 | | 2019-10-23 22:44:38.154283 |
| 555 | 2019-10-23 23:34:35.322073 | |
| 555 | | 2019-10-26 11:48:13.330636 |
+------------+----------------------------+----------------------------+
但不幸的是,我能得到的只有:
+------------+----------------------------+----------------------------+
| referencia | I | F |
+------------+----------------------------+----------------------------+
| 123 | 2019-10-23 22:38:10.434322 | |
| 123 | | 2019-10-23 22:38:19.986666 |
| 123 | 2019-10-23 22:39:08.760218 | |
| 123 | | 2019-10-23 22:39:42.762875 |
| 123 | 2019-10-23 22:40:02.301749 | |
| 123 | | 2019-10-23 22:40:24.000795 |
| 133 | 2019-10-23 22:42:14.712779 | |
| 133 | | 2019-10-23 22:42:20.159414 |
| 199 | 2019-10-23 22:44:30.502311 | |
| 199 | | 2019-10-23 22:44:38.154283 |
| 123 | 2019-10-23 23:24:59.687386 | |
| 111 | 2019-10-23 23:26:18.325750 | |
| 555 | 2019-10-23 23:34:35.322073 | |
| 111 | | 2019-10-23 23:42:45.719985 |
| 156 | 2019-10-26 11:47:13.848750 | |
| 156 | | 2019-10-26 11:47:21.289268 |
| 123 | | 2019-10-26 11:48:07.831072 |
| 555 | | 2019-10-26 11:48:13.330636 |
+------------+----------------------------+----------------------------+
我不能 groupby,因为我尝试它时会出现以下错误: “ValueError:索引包含重复条目,无法重塑”
忘记附上源数据了,不在下面:
utilizador,referencia,time_stamp,acao
AG,123,2019-10-23 22:38:10.434322,I
AG,123,2019-10-23 22:38:19.986666,F
AG,123,2019-10-23 22:39:08.760218,I
AG,123,2019-10-23 22:39:42.762875,F
AG,123,2019-10-23 22:40:02.301749,I
AG,123,2019-10-23 22:40:24.000795,F
AG,133,2019-10-23 22:42:14.712779,I
AG,133,2019-10-23 22:42:20.159414,F
AG,199,2019-10-23 22:44:30.502311,I
AG,199,2019-10-23 22:44:38.154283,F
AG,123,2019-10-23 23:24:59.687386,I
AG,111,2019-10-23 23:26:18.325750,I
AG,555,2019-10-23 23:34:35.322073,I
AG,111,2019-10-23 23:42:45.719985,F
AA,156,2019-10-26 11:47:13.848750,I
AG,156,2019-10-26 11:47:21.289268,F
AG,123,2019-10-26 11:48:07.831072,F
AG,555,2019-10-26 11:48:13.330636,F
【问题讨论】:
-
您还应该显示输入。您的 csv 的子样本应该会导致预期的结果。没有它,几乎不可能帮助你。
-
@Valentino 你说得对,我打算粘贴源数据,但很担心表格的格式,最后忘记粘贴了。立即编辑帖子。
标签: python pandas datetime data-science