pandas将每一行加起来直到零,然后保持为零

时间:2018-04-12 02:32:01

标签: pandas python-3.6

第一次使用熊猫,我提供了一个较小版本的数据框,我创建如下:

 Date project1 project2 project3   
0 12/10/2017 100 200 300       
1 12/11/2017 0 300 400   
2 12/12/2017 0 0 500   

我需要为每个单独的项目做2个cumsum,它在0处停止。所有项目中的另一个项目都是明智的。我一直在努力争取日期或只计算零。任何建议都会得到赞赏 所以输出结果如下:

Date project1 project2 project3 project_sum   
0 12/10/2017 100 200 300 600   
1 12/11/2017 0 300 400 700   
2 12/12/2017 0 0 500 500

cell.layer.zPosition = CGFloat(indexPath.row)

1 个答案:

答案 0 :(得分:1)

对于第一个问题,请使用cumsumcumprod

df[['project1','project2','project3']].cumsum().mask(df[['project1','project2','project3']].cumprod().eq(0),0)
Out[86]: 
   project1  project2  project3
0       100       200       300
1         0       300       400
2         0         0       500

然后使用sum(axis=1)

将其分配回来
df[['project1','project2','project3']]=df[['project1','project2','project3']].cumsum().mask(df[['project1','project2','project3']].cumprod().eq(0),0)
df['projectSum']=df[['project1','project2','project3']].sum(1)
df
Out[89]: 
         Date  project1  project2  project3  projectSum
0  12/10/2017       100       200       300         600
1  12/11/2017         0       300       400         700
2  12/12/2017         0         0       500         500