想知道有没有什么解决方法
original_value = [1,2,3,5,5,9,13]
lastvalue = original_value[0] # 把last value设为第一个值
newcum = []
for i in original_value[1:]: # 从第二个值开始
if lastvalue + i > 10: # 若加上新值已经超过了阈值
newcum.append(lastvalue) # 把已经有的值填入
lastvalue = i # 更新last value(包含新值大于10的情况)
else:
lastvalue += i # 若不超过即更新last value
newcum.append(lastvalue) # 最后一个值,在循环中不会填入,所以需要单独操作
# newcum : [6,10,9,13] # 得到目标
然后将original替换为df['金额']即可,可用
original = list(df['金额'])
考虑到最后一次求和,可能会剩余几个数字因为没有到100000而被忽略掉的问题。提供参考代码如下:
lastvalue = 0
newcum = []
n = 1
for i in df['金额']:
if lastvalue <= 100000:
if lastvalue+i > 100000:
newcum.append(lastvalue)
lastvalue = i
else:
lastvalue += i
if n == len(df['金额']):
newcum.append(lastvalue)
n += 1
print(newcum)
可以利用xlrd和xlwt实现
你要先判断加了i后是否超出10万,不能先加。
for i in df['金额']:
if lastvalue + i > 100000:
lastvalue = i
newcum.append(lastvalue)
else:
lastvalue += i
这个应该符合你的预期,条件要>=10,最后的累加值不一定会追加进去,看你需求,需要的话在结束循环之后把最后的累加值也加到列表里
values = [1, 2, 3, 4, 4, 5, 3, 5, 1, 3 ,5]
current_sum = 0
cumsum = []
for i in range(len(values)):
if (current_sum + values[i]) >= 10:
cumsum.append(current_sum)
current_sum = values[i]
else:
current_sum += values[i]
cumsum.append(current_sum)
current_sum = 0
cumsum = []
for i in df['金额']:
if (current_sum + i) >= 10:
cumsum.append(current_sum)
current_sum = i
else:
current_sum += i
cumsum.append(current_sum)