如何为Pandas DataFrame生成commits列的累计求和列Commit_growth?
问题解决:计算DataFrame中commits列的累计总和
问题背景
原始DataFrame结构:
info_version commits commitdates 18558 17.1.3 42 2017-07-14 20783 17.1.3 57 2017-07-14 20782 17.2.2 57 2017-09-27 18557 17.2.2 42 2017-09-27 18556 17.2.3 42 2017-10-30 20781 17.2.3 57 2017-10-30 20780 17.2.4 57 2017-11-27 18555 17.2.4 42 2017-11-27 20779 17.2.5 57 2018-01-10
需求:计算commits列从第一行到当前行的累计总和,生成名为Commit_growth的列,期望输出如下:
info_version commits commitdates Commit_growth 18558 17.1.3 42 2017-07-14 42 20783 17.1.3 57 2017-07-14 109 20782 17.2.2 57 2017-09-27 166 18557 17.2.2 42 2017-09-27 208 18556 17.2.3 42 2017-10-30 250 20781 17.2.3 57 2017-10-30 307 20780 17.2.4 57 2017-11-27 364 18555 17.2.4 42 2017-11-27 406 20779 17.2.5 57 2018-01-10 463
用户尝试的代码仅能得到commits列的整体总和,无法实现累计求和:
data2 = data1[['info_version', 'commits', 'commitdates']].sort_values(by='info_version', ascending=True) sum_row = data2.sum(axis=0)
解决方案
Pandas的cumsum()方法专门用于计算累计求和,直接对commits列调用该方法即可生成目标列。
完整代码:
# 按info_version排序(保持需求中的顺序) data2 = data1[['info_version', 'commits', 'commitdates']].sort_values(by='info_version', ascending=True) # 生成累计求和列 data2['Commit_growth'] = data2['commits'].cumsum()
说明
cumsum()会从第一行开始,依次计算到当前行的累加值,完全匹配需求。- 执行后
data2将包含期望的Commit_growth列,结果与示例一致。
内容的提问来源于stack exchange,提问作者Brie MerryWeather
相关产品推荐
相关产品推荐

