Python 使用条件分组遍历行
我有一个示例表,其中对行进行了排序,我试图找出一种方法来对行进行分组,直到分组行的“大小”总和超过16。之后,流程继续对其余行进行分组: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 |
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,因此将形成另一个组。这是我的意图,我认为这与你的例子有些不同。