【发布时间】:2020-04-15 07:42:36
【问题描述】:
这给了我 df 中 ID 的进入和退出时间:
minmax = merge_df.groupby(['id'])['date'].agg([min, max])
result
id min max
4900 2019-09-17 08:43:06 2019-09-17 09:38:20
4909 2019-09-17 08:43:06 2019-09-17 09:16:00
4911 2019-09-17 08:43:06 2019-09-17 09:43:58
4965 2019-09-17 09:27:14 2019-09-17 09:38:28
5134 2019-09-17 09:34:26 2019-09-17 09:38:27
5139 2019-09-17 09:37:03 2019-09-17 09:46:19
5141 2019-09-17 09:37:22 2019-09-17 12:06:30
5163 2019-09-17 09:38:03 2019-09-17 10:18:29
5170 2019-09-17 09:38:19 2019-09-17 12:47:49
这就是我的 DF 结构的样子:
df
date x y id
2019-09-17 08:43:06 206 210 4900
2019-09-17 08:43:06 234 236 4909
2019-09-17 08:43:06 251 222 4911
2019-09-17 08:43:07 231 244 4909
2019-09-17 08:43:07 252 222 4911
2019-09-17 08:43:07 207 210 4965
2019-09-17 08:43:08 234 250 5163
2019-09-17 08:43:08 252 222 4911
2019-09-17 08:43:08 206 210 4900
2019-09-17 08:43:09 252 222 4911
2019-09-17 08:43:09 206 210 4900
2019-09-17 08:43:09 223 247 4909
2019-09-17 08:43:10 206 210 4900
2019-09-17 08:43:10 229 237 4909
2019-09-17 08:43:10 252 222 4911
2019-09-17 08:43:12 226 241 4909
如何在我的 DF 中创建一个新列,比较给定秒内 ID 的入口点,如果它们出现在同一时间范围内(例如同一分钟),那么我想得到类似的东西插入分组大小,如下所示:
df
date x y id groupsize
2019-09-17 08:43:06 206 210 4900 3
2019-09-17 08:43:06 234 236 4909 3
2019-09-17 08:43:06 251 222 4911 3
2019-09-17 08:43:07 231 244 4909 3
2019-09-17 08:43:07 252 222 4911 3
2019-09-17 08:43:07 207 210 4965 1
2019-09-17 08:43:08 234 250 5134 1
2019-09-17 08:43:08 252 222 5139 2
2019-09-17 08:43:08 206 210 4900 3
2019-09-17 08:43:09 252 222 4911 3
2019-09-17 08:43:09 206 210 4900 3
2019-09-17 08:43:09 223 247 4909 3
2019-09-17 08:43:10 206 210 5141 2
2019-09-17 08:43:10 229 237 4909 3
2019-09-17 08:43:10 252 222 5163 2
2019-09-17 08:43:12 226 241 5170 2
我该怎么做?这是任何人都可以帮助我的吗?
感谢任何提示!
【问题讨论】:
-
什么决定了组的大小?
-
分组大小由给定秒内的不同 ID 确定,仅考虑在相似时间范围内出现在数据集中的那些 ID(可以定义为 S 间隔)。这有意义吗?所以第一个分组大小是 3,因为 ID 4900,4909 和 4911 都出现在第二个 6。而 ID 4965 在第二个 7 单独出现,因此分组大小是 1。
-
知道了,查看解决方案。
标签: python pandas datetime group-by