如果我有一个带有以下列的pandas数据框:id,num,amount。
我想对数据框进行分组,使得每个组中的所有行具有相同的id和amount,并且每行的num值的值不超过下一行的num值的值10个以上或10个以下。
对于相同的id,如果从一行到另一行没有相同的amount,或者两个num值之间的绝对差大于10,则会开始一个新的分组。在中间有一个不同的id的行不会打破分组。
我该如何做到这一点?
我还没有成功地进行分组,其中我不需要寻找匹配值(就像这里一样,我需要它接近-但不匹配)。我假设这需要一些自定义分组函数,但我一直很难组合它们。
示例数据框:
编号 | 金额 | 数量 |
---|---|---|
aaa-aaa | 130 | 12 |
aaa-aaa | 130 | 39 |
bbb-bbb | 270 | 41 |
ccc-ccc | 130 | 19 |
bbb-bbb | 270 | 37 |
aaa-aaa | 130 | 42 |
aaa-aaa | 380 | 39 |
预期的分组结果:
Group 1:
编号 | 金额 | 数量 |
---|---|---|
aaa-aaa | 130 | 12 |
第二组:
编号 | 金额 | 数量 |
---|---|---|
aaa-aaa | 130 | 39 |
aaa-aaa | 130 | 42 |
第三组:
编号 | 金额 | 数量 |
---|---|---|
bbb-bbb | 270 | 41 |
bbb-bbb | 270 | 37 |
第四组:
id | amount | num |
---|---|---|
ccc-ccc | 130 | 19 |
第五组:
id | amount | num |
---|---|---|
aaa-aaa | 380 | 39 |
[15, 20, 26, 30]
吗?这仍然会使相邻数字之间的差小于10吧? - yem