Python 使用条件分组遍历行

Python 使用条件分组遍历行,python,pandas,Python,Pandas,我有一个示例表,其中对行进行了排序,我试图找出一种方法来对行进行分组,直到分组行的“大小”总和超过16。之后,流程继续对其余行进行分组: ID Rank Size Value 1 | 1 | 8 | 1 5 | 2 | 8 | 2 3 | 3 | 8 | 5 9 | 4 | 2 | 1 2 | 5 | 4 | 3 4 | 6 |

我有一个示例表,其中对行进行了排序,我试图找出一种方法来对行进行分组,直到分组行的“大小”总和超过16。之后,流程继续对其余行进行分组:

ID    Rank    Size    Value
1   |   1   |    8   |   1 
5   |   2   |    8   |   2
3   |   3   |    8   |   5
9   |   4   |    2   |   1
2   |   5   |    4   |   3
4   |   6   |    8   |   4
...
制作类似于:

Group No.     Sum. Size     Sum. Value
   1             16            3
   2             14            9
  ...

我并不期待有一个有效的解决方案,但任何关于如何逻辑地构建问题的建议/可用的工具(如Pandas、Itertools等)都会很好

您可以通过
DataFrameGroupBy
对象作为字典进行迭代:

for k,v in data.groupby('some_column'):
        if v.shape[0] > 16:
                #do something
                pass
此代码用于获取大小大于16的组以及求和值大于16的行:

summed = data.groupby('some_column').sum()
over_16 = summed[summed['sum_column'] > 16]

您可以以字典的形式遍历
DataFrameGroupBy
对象:

for k,v in data.groupby('some_column'):
        if v.shape[0] > 16:
                #do something
                pass
此代码用于获取大小大于16的组以及求和值大于16的行:

summed = data.groupby('some_column').sum()
over_16 = summed[summed['sum_column'] > 16]

我不希望根据单个“大小”值对行进行分组,而是逐步遍历每一行,以确定具有不超过16的合计“大小”值的行组。我希望分组对“排名”进行优先级排序,以便将排名靠前的行组合在一起,依此类推。在示例表1中,ID为1和5的行的组合“大小”值为16,因此将形成一个组。ID行3、9和2的组合“大小”值为14,因此将形成另一个组。这就是我的意图,我认为这与您的示例有所不同。我不希望根据单个“大小”值对行进行分组,而是逐步遍历每一行,以确定具有总和“大小”值不超过16的行组。我希望分组对“排名”进行优先级排序,以便将排名靠前的行组合在一起,依此类推。在示例表1中,ID为1和5的行的组合“大小”值为16,因此将形成一个组。ID行3、9和2的组合“大小”值为14,因此将形成另一个组。这是我的意图,我认为这与你的例子有些不同。