根据cumsum值对行进行求和

时间:2017-08-30 08:50:46

标签: python pandas dataframe cumsum

我有一个数据框

指数A B C
0 4 7 9
1 2 6 2
2 6 9 1
3 7 2 4
4 8 5 6

我想根据C列的总和创建另一个数据帧。但是这里的问题是,如果C的总和达到10或更高,它应该创建另一行。这样的事情。

指数A B C
0 6 13 11
1 21 16 11

任何帮助都会非常值得注意。有没有一种强有力的方法来做到这一点,或迭代是我的最后手段?

2 个答案:

答案 0 :(得分:2)

有一种非迭代的方法。您需要基于groupby的{​​{1}}。

C % 11

答案 1 :(得分:0)

代码看起来像这样:

import pandas as pd

lista = [4, 7, 10, 11, 7]
listb= [7, 8, 2, 5, 9]
listc = [9, 2, 1, 4, 6]

df = pd.DataFrame({'A': lista, 'B': listb, 'C': listc})

def sumsc(df):
    suma=0
    sumb=0
    sumc=0
    list_of_sums = []
    for i in range(len(df)):
        suma+=df.iloc[i,0]
        sumb+=df.iloc[i,1]
        sumc+=df.iloc[i,2]
        if sumc > 10:
            list_of_sums.append([suma, sumb, sumc])
            suma=0
            sumb=0
            sumc=0
    return pd.DataFrame(list_of_sums)

sumsc(df)

    0   1   2
0  11  15  11
1  28  16  11