【发布时间】:2022-10-07 19:26:47
【问题描述】:
我有这个数据框:
df = pd.DataFrame({\'time\' : [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
\'value\' : [0.10, 0.25, 0.40, 0.24, 0.20, 0.36, 0.31, 0.20, 0.32, 0.40],
\'quantity_A\' : [1, 2, 3, 1, 2, 1, 1, 2, 1, 1],
\'quantity_B\' : [2, 2, 3, 4, 2, 2, 3, 4, 1, 1]})
看起来像这样:
time value quantity_A quantity_B
0 1 0.10 1 2
1 1 0.25 2 2
2 1 0.40 3 3
3 1 0.24 1 4
4 1 0.20 2 2
5 2 0.36 1 2
6 2 0.31 1 3
7 2 0.20 2 4
8 2 0.32 1 1
9 2 0.40 1 1
我想要这样的东西:
time interval quantity_A quantity_B
0 1 [0.1, 0.2] 3 4
1 1 (0.2, 0.3] 3 6
2 1 (0.3, 0.4] 3 3
3 2 [0.2, 0.3] 2 4
4 2 (0.3, 0.4] 4 7
或者这将是首选,但似乎更难做到,因为它不适用于 cut:
time interval quantity_A quantity_B
0 1 0.1 1 2
1 1 0.2 0 0
2 1 0.3 5 8
3 1 0.4 3 3
4 2 0.2 2 4
5 2 0.3 3 6
6 2 0.4 1 1
其中数据帧按time 分组,interval 取决于组的min 和max,步长可以指定,在本例中为0.1。 quantity_A 和 quantity_B 应该根据它们所在的组和时间间隔进行总结。我已经设法通过迭代整个数据帧来手动完成此操作,但由于我的数据集很长,因此需要很长时间。有没有办法使用 groupby 和 cut 等 pandas 函数来加快速度?
-
最小参考值是否应该始终是 0.1 的倍数?不确定我理解第二个选项,你能解释一下吗?