Pandas 数据框 - 运行总和并重置
Posted
技术标签:
【中文标题】Pandas 数据框 - 运行总和并重置【英文标题】:Pandas dataframe - running sum with reset 【发布时间】:2015-12-29 15:47:20 【问题描述】:我想计算给定列中的运行总和(当然不使用循环)。需要注意的是,我有另一列指定何时将运行总和重置为该行中存在的值。最好用下面的例子来解释:
reset val desired_col
0 0 1 1
1 0 5 6
2 0 4 10
3 1 2 2
4 1 -1 -1
5 0 6 5
6 0 4 9
7 1 2 2
desired_col
是我要计算的值。
【问题讨论】:
【参考方案1】:你可以使用2次cumsum()
:
# reset val desired_col
#0 0 1 1
#1 0 5 6
#2 0 4 10
#3 1 2 2
#4 1 -1 -1
#5 0 6 5
#6 0 4 9
#7 1 2 2
df['cumsum'] = df['reset'].cumsum()
#cumulative sums of groups to column des
df['des']= df.groupby(['cumsum'])['val'].cumsum()
print df
# reset val desired_col cumsum des
#0 0 1 1 0 1
#1 0 5 6 0 6
#2 0 4 10 0 10
#3 1 2 2 1 2
#4 1 -1 -1 2 -1
#5 0 6 5 2 5
#6 0 4 9 2 9
#7 1 2 2 3 2
#remove columns desired_col and cumsum
df = df.drop(['desired_col', 'cumsum'], axis=1)
print df
# reset val des
#0 0 1 1
#1 0 5 6
#2 0 4 10
#3 1 2 2
#4 1 -1 -1
#5 0 6 5
#6 0 4 9
#7 1 2 2
【讨论】:
以上是关于Pandas 数据框 - 运行总和并重置的主要内容,如果未能解决你的问题,请参考以下文章