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
与如何求和到一个值并找到应该重置的索引相关。