Python 如何根据条件重置的累积和进行分组

Python 如何根据条件重置的累积和进行分组,python,pandas,conditional-statements,cumsum,Python,Pandas,Conditional Statements,Cumsum,我有一个与文章对应的单词计数。我希望能够添加另一个列合并,该列基于具有最小“min_单词”累积和的文章组 df = pd.DataFrame([[ 0, 6], [ 1, 10], [ 3, 5], [ 4, 7], [ 5, 26], [ 6, 7], [ 9, 4], [ 10, 133], [ 11, 42], [ 12,

我有一个与文章对应的单词计数。我希望能够添加另一个列
合并
,该列基于具有最小“min_单词”累积和的文章组

df = pd.DataFrame([[  0,  6],
       [  1,  10],
       [  3,   5],
       [  4,   7],
       [  5,  26],
       [  6,   7],
       [  9,   4],
       [ 10, 133],
       [ 11,  42],
       [ 12,   1]], columns=['ARTICLE', 'WORD_COUNT'])

df
Out[15]: 
   ARTICLE  WORD_COUNT
0        0           6
1        1          10
2        3           5
3        4           7
4        5          26
5        6           7
6        9           4
7       10         133
8       11          42
9       12           1
因此,如果
min_words=20
这是所需的输出:

    df
Out[17]: 
   ARTICLE  WORD_COUNT  MERGED
0        0           6       0
1        1          10       0
2        3           5       0
3        4           7       1
4        5          26       1
5        6           7       2
6        9           4       2
7       10         133       2
8       11          42       3
9       12           1       4

如上所述,最终文章可能不满足min_words条件,这没关系。

我们只能执行自定义功能

def dymcumsum(v, limit):
     idx = []
     sums = 0
     for i in range(len(v)):
         sums += v[i]
         if sums >= limit:
             idx.append(i)
             sums = 0
     return(idx)
df['New']=np.nan
df.loc[dymcumsum(df.WORD_COUNT,20),'New']=1
df.New=df.New.iloc[::-1].eq(1).cumsum()[::-1].factorize()[0]+1
 
df
   ARTICLE  WORD_COUNT  New
0        0           6    1
1        1          10    1
2        3           5    1
3        4           7    2
4        5          26    2
5        6           7    3
6        9           4    3
7       10         133    3
8       11          42    4
9       12           1    5
与如何求和到一个值并找到应该重置的索引相关。