猿问

对 Python 中数据帧的所有先前值求和

我有如下数据:


Year         Month          Region           Value

1978           1             South             1

1990           1             North             22

1990           2             South             33

1990           2             Mid W             12

1998           1             South             1

1998           1             North             12

1998           2             South             2

1998           3             South             4

1998           1             Mid W             2

.

.


up to

2010

2010

我的结束日期是 2010 年,但我想通过将所有前一年的值加在一起来按地区和月份来总结所有值。


我不想要一个常规的累计金额,而是一个按地区划分的每月累计金额,其中南地区的第 1 个月是之前所有前一个月的南地区的第 1 个月的累计月数,等等......


所需的输出类似于:


Month          Region        Cum_Value

 1             South            2

 2             South            34

 3             South            4

 .

 .

 1             North            34

 2             North            10

 .

 .

 1             MidW              2

 2             MidW              12


一只名叫tom的猫
浏览 170回答 2
2回答

HUH函数

使用pd.DataFrame.groupby与pd.DataFrame.cumsumdf1['cumsum'] = df1.groupby(['Month', 'Region'])['Value'].cumsum()结果:   Year  Month Region  Value  cumsum0  1978      1  South    1.0     1.01  1990      1  North   22.0    22.02  1990      2  South   33.0    33.03  1990      2  Mid W   12.0    12.04  1998      1  South    1.0     2.05  1998      1  North   12.0    34.06  1998      2  South    2.0    35.07  1998      3  South    4.0     4.08  1998      1  Mid W    2.0     2.0

九州编程

这是另一个更符合您预期输出的解决方案。df = pd.DataFrame({'Year': [1978,1990,1990,1990,1998,1998,1998,1998,1998],              'Month': [1,1,2,2,1,1,2,3,1],              'Region': ['South','North','South','Mid West','South','North','South','South','Mid West'],              'Value' : [1,22,33,12,1,12,2,4,2]})#DataFrame Result    Year  Month Region  Value0   1978    1   South    11   1990    1   North    222   1990    2   South    333   1990    2   Mid West 124   1998    1   South    15   1998    1   North    126   1998    2   South    27   1998    3   South    48   1998    1   Mid West 2要运行的代码:df1 = df.groupby(['Month','Region']).sum()df1 = df1.drop('Year',axis=1)df1 = df1.sort_values(['Month','Region'])#Final ResultMonth   Region  Value1      Mid West  21      North     341      South     22      Mid West  122      South     353      South     4
随时随地看视频慕课网APP

相关分类

Python
我要回答