【发布时间】:2021-12-14 00:34:01
【问题描述】:
我有一些像这样的 python pandas 数据框。它列出了使用 ocr 提取的打印表中标签的位置。所以每个标签位置都有一点偏移。
left top text
4 66 23 6/22/2021
6 66 82 6/23/2021
8 65 142 6/24/2021
10 65 202 6/25/2021
12 64 262 6/26/2021
16 345 25 14:00
18 354 85 7:30
20 344 145 13:00
22 344 206 11:00
24 343 265 10:00
26 343 325 15:00
30 859 23 20:30
32 860 84 14:00
34 858 144 20:23
36 859 204 18:00
38 858 264 13:00
40 858 324 18:15
44 1091 23 6:30
46 1091 84 6:30
48 1090 144 7:23
50 1090 204 7:00
52 1089 264 3:00
54 1089 324 3:15
56 1088 383 0:00
58 1087 443 0:00
60 1087 503 0:00
62 1047 563 33:38:00
我需要按“左”列值对数据进行排序,然后将每组值设置为特定值。
在这种情况下,前五个值 [66,66,65,65,64] 可以组合在一起,因为它们的范围很窄(例如 [60...70])。然后将前五个值设置为范围的最小值([60...70],但它可以是值的范围 [64...66])。
依此类推,对于每组值,按它们的值在一个狭窄范围内的事实进行分组。
每个组的大小(如果是随机的)。在这种情况下,最后一行的“左”值为 [1047]。它适合单个值组。
这些值也是随机的。据我了解,我无法使用此解决方案:how to group by list ranges of value in python pandas
然后我将对第二列“top”做同样的工作。
这样做的诀窍是什么?
我知道有一种数学方法可以做到这一点。我可以在某些 daw 中使用它来“锐化”声音。但也许有一种 python pandas 方法可以做到这一点。
我不是以英语为母语的人。所以我希望你能理解我。
感谢您的宝贵时间
编辑:
我想要的(但它可以是每个组的最小值,或者这里是组的第一个值):
left top text
4 66 23 6/22/2021
6 66 82 6/23/2021
8 66 142 6/24/2021
10 66 202 6/25/2021
12 66 262 6/26/2021
16 345 25 14:00
18 345 85 7:30
20 345 145 13:00
22 345 206 11:00
24 345 265 10:00
26 345 325 15:00
30 859 23 20:30
32 859 84 14:00
34 859 144 20:23
36 859 204 18:00
38 859 264 13:00
40 859 324 18:15
44 1091 23 6:30
46 1091 84 6:30
48 1091 144 7:23
50 1091 204 7:00
52 1091 264 3:00
54 1091 324 3:15
56 1091 383 0:00
58 1091 443 0:00
60 1091 503 0:00
62 1047 563 33:38:00
【问题讨论】:
-
narrow range 是一个非常抽象的术语。也许您想按差异为 0 或 1 的值进行分组?
-
请发布您预期的输出数据框
-
@Chris :我想按差异不高于 10 的值进行分组
-
@sammywemmy:完成