我有一个数据框
指数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
任何帮助都会非常值得注意。有没有一种强有力的方法来做到这一点,或迭代是我的最后手段?
答案 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