3

有没有更优雅的方法来实现这一点?我目前基于各种stackoverflow答案的解决方案如下

df = pds.DataFrame([[11,12,13,14],[15,16,17,18]], columns = [0,1,2,3])  
print df  
dT = df.T  
dT.reindex(dT.index[::-1]).cumsum().reindex(dT.index).T  

输出

df is:
    0   1   2   3  
0  11  12  13  14  
1  15  16  17  18  

after by row reverse cumsum
    0   1   2   3
0   50  39  27  14  
1   66  51  35  18  

我必须经常对我的数据执行此操作(也更大),并尝试找到一种更短/更好的方法来实现这一目标。

谢谢

4

1 回答 1

6

这是一个更具可读性的替代方案:

df[df.columns[::-1]].cumsum(axis=1)[df.columns]

无需转置您的 DataFrame;只需使用axis=1参数 to cumsum

显然,最简单的方法是以相反的顺序存储您的 DataFrame 列,但我认为您不这样做是有原因的。

于 2014-10-15T18:59:43.010 回答