如果我有一个pandas dataframe,其中包含以下列:id,num,金额。
我想对 Dataframe 进行分组,使得每个组中的所有行都具有相同的id和amount,并且其中每行的num的值与下一行的num的值相差不超过10。
对于相同的id,如果一行到下一行的amount不相同,或者两个num值的绝对差值大于10,则会开始一个新的分组。如果中间有一行的id不同,则不会破坏分组。
我该怎么做呢?
我还没有设法使一个分组,我不寻找匹配的值(如这里,我需要它是接近-但不匹配)。我假设这将需要一些自定义分组功能,但我一直有麻烦把一个在一起
数据框示例:
身份证 | 金额 | 努姆 |
---|---|---|
AAA | 一百三十 | 十二岁 |
AAA | 一百三十 | 三十九 |
bbbbb | 二百七十 | 四十一 |
CCC-CCC | 一百三十 | 十九 |
bbbbb | 二百七十 | 三十七 |
AAA | 一百三十 | 四十二 |
AAA | 三百八十 | 三十九 |
预期分组:
第1组:
| 身份证|金额|努姆|
| --------------|--------------|--------------|
| AAA|一百三十|十二岁|
第二组:
| 身份证|金额|努姆|
| --------------|--------------|--------------|
| AAA|一百三十|三十九|
| AAA|一百三十|四十二|
第三组:
| 身份证|金额|努姆|
| --------------|--------------|--------------|
| bbbbb|二百七十|四十一|
| bbbbb|二百七十|三十七|
第四组:
| 身份证|金额|努姆|
| --------------|--------------|--------------|
| CCC-CCC|一百三十|十九|
第五组:
| 身份证|金额|努姆|
| --------------|--------------|--------------|
| AAA|三百八十|三十九|
2条答案
按热度按时间pu3pd22g1#
逻辑并不完全清楚,但假设你想在差距超过10时开始一个新的组:
输出:
xtupzzrd2#
通过
amount
和num
排序,并在连续值之间添加辅助标记列difference(适合阈值):