【发布时间】:2020-06-22 15:39:19
【问题描述】:
我有一个DataFrame,下面的列:
A B C D
ID
276 4 7.0 30 0
76 2 3.0 15 0
203 7 9.5 15 11
197 7 9.5 11 0
261 8 8.5 9 11
119 2 8.0 15 12
547 7 2.5 10 0
385 13 10.0 30 0
202 6 9.5 11 0
286 4 9.0 30 0
459 4 9.5 7 0
36 2 3.0 15 0
442 5 9.0 7 0
554 6 8.0 6 0
309 2 7.5 30 0
334 5 7.0 15 0
238 2 8.5 18 0
6 2 6.0 30 0
237 2 7.5 24 0
509 3 7.0 30 0
319 3 6.0 18 0
179 6 9.0 18 0
328 4 8.0 18 0
我正在尝试将 DataFrame 按列 'A' 拆分为多个值,其中值的总和小于或等于 w,并且对拆分或 ID 的数量没有定义的限制
(即df['A'].sum() <= w)
如果可能,首先按'B' 列的最大值分组。
生成的DataFrames 应如下所示:
A B C D
ID
385 13 10 30 0
203 7 9.5 15 11
A B C D
ID
197 7 9.5 11 0
202 6 9.5 11 0
459 4 9.5 7 0
A B C D
ID
286 4 9 30 0
442 5 9 7 0
179 6 9 18 0
A B C D
ID
261 8 8.5 9 11
238 2 8.5 18 0
119 2 8 15 12
554 6 8 6 0
A B C D
ID
328 4 8 18 0
309 2 7.5 30 0
237 2 7.5 24 0
276 4 7 30 0
334 5 7 15 0
509 3 7 30 0
A B C D
ID
6 2 6 30 0
319 3 6 18 0
76 2 3 15 0
36 2 3 15 0
547 7 2.5 10 0
最简单的方法是什么?
【问题讨论】:
-
this question 可能重复。
-
所以为了澄清你想创建多个新的数据帧,其中 A 的总和小于 w 并且 B 的总和在每个新帧中大致相等?
-
我正在尝试对“A”之和小于“w”的数据帧进行分块,并通过最小化“B”列中的差异来对这些块进行分组。
标签: python pandas dataframe split