亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas 不改變周序號累計總和

Pandas 不改變周序號累計總和

蝴蝶不菲 2023-10-11 22:55:54
我有一個數據框,如下所示:df:RY  Week no Value2020    14  3.953212020    15  3.564252020    16  0.070422020    17  6.454172020    18  0.000292020    19  0.277372020    20  4.126442020    21  0.327532020    22  0.472392020    23  0.287562020    24  1.830292020    25  0.753852020    26  2.089812020    27  2.056112020    28  1.006142020    29  0.021052020    30  0.581012020    31  3.490832020    32  8.290132020    33  8.998252020    34  2.662932020    35  0.164482020    36  2.263012020    37  1.093022020    38  1.665662020    39  1.472332020    40  6.427082020    41  2.679472020    42  6.795512020    43  4.458812020    44  1.879722020    45  0.762842020    46  1.86712020    47  2.071592020    48  2.873032020    49  7.669442020    50  1.204212020    51  9.044162020    52  2.26252020    1   1.170262020    2   14.222632020    3   1.364642020    4   2.648622020    5   8.699162020    6   4.512592020    7   2.834112020    8   3.641832020    9   4.772922020    10  1.647292020    11  1.68782020    12  2.248742020    13  0.32712我使用日期創建了一周無列。在我的場景中,監管年度從 4 月 1 日開始,到明年 3 月 31 日結束,這就是為什么周號從 14 開始,到 13 結束?,F在我想創建另一個包含值列的累積和的列。我嘗試使用以下代碼來使用 cumsum():df['Cummulative Value'] = df.groupby('RY')['Value'].apply(lambda x:x.cumsum())上述代碼的問題在于,它從第 1 周開始計算累積和,而不是從第 14 周開始計算。有沒有什么方法可以在不影響周訂單數的情況下計算累計總和?
查看完整描述

1 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

編輯:您可以按原始順序的之前和最后一個排序索引對值RY進行Week no排序GroupBy.cumsum

#create default index for correct working

df = df.reset_index(drop=True)

df['Cummulative Value'] = df.sort_values(['RY','Week no']).groupby('RY')['Value'].cumsum().sort_index()

print (df)

? ? ? RY? Week no? ? ?Value? Cummulative Value

0? ?2020? ? ? ?14? ?3.95321? ? ? ? ? ?53.73092

1? ?2020? ? ? ?15? ?3.56425? ? ? ? ? ?57.29517

2? ?2020? ? ? ?16? ?0.07042? ? ? ? ? ?57.36559

3? ?2020? ? ? ?17? ?6.45417? ? ? ? ? ?63.81976

4? ?2020? ? ? ?18? ?0.00029? ? ? ? ? ?63.82005

5? ?2020? ? ? ?19? ?0.27737? ? ? ? ? ?64.09742

6? ?2020? ? ? ?20? ?4.12644? ? ? ? ? ?68.22386

7? ?2020? ? ? ?21? ?0.32753? ? ? ? ? ?68.55139

8? ?2020? ? ? ?22? ?0.47239? ? ? ? ? ?69.02378

9? ?2020? ? ? ?23? ?0.28756? ? ? ? ? ?69.31134

10? 2020? ? ? ?24? ?1.83029? ? ? ? ? ?71.14163

11? 2020? ? ? ?25? ?0.75385? ? ? ? ? ?71.89548

12? 2020? ? ? ?26? ?2.08981? ? ? ? ? ?73.98529

13? 2020? ? ? ?27? ?2.05611? ? ? ? ? ?76.04140

14? 2020? ? ? ?28? ?1.00614? ? ? ? ? ?77.04754

15? 2020? ? ? ?29? ?0.02105? ? ? ? ? ?77.06859

16? 2020? ? ? ?30? ?0.58101? ? ? ? ? ?77.64960

17? 2020? ? ? ?31? ?3.49083? ? ? ? ? ?81.14043

18? 2020? ? ? ?32? ?8.29013? ? ? ? ? ?89.43056

19? 2020? ? ? ?33? ?8.99825? ? ? ? ? ?98.42881

20? 2020? ? ? ?34? ?2.66293? ? ? ? ? 101.09174

21? 2020? ? ? ?35? ?0.16448? ? ? ? ? 101.25622

22? 2020? ? ? ?36? ?2.26301? ? ? ? ? 103.51923

23? 2020? ? ? ?37? ?1.09302? ? ? ? ? 104.61225

24? 2020? ? ? ?38? ?1.66566? ? ? ? ? 106.27791

25? 2020? ? ? ?39? ?1.47233? ? ? ? ? 107.75024

26? 2020? ? ? ?40? ?6.42708? ? ? ? ? 114.17732

27? 2020? ? ? ?41? ?2.67947? ? ? ? ? 116.85679

28? 2020? ? ? ?42? ?6.79551? ? ? ? ? 123.65230

29? 2020? ? ? ?43? ?4.45881? ? ? ? ? 128.11111

30? 2020? ? ? ?44? ?1.87972? ? ? ? ? 129.99083

31? 2020? ? ? ?45? ?0.76284? ? ? ? ? 130.75367

32? 2020? ? ? ?46? ?1.86710? ? ? ? ? 132.62077

33? 2020? ? ? ?47? ?2.07159? ? ? ? ? 134.69236

34? 2020? ? ? ?48? ?2.87303? ? ? ? ? 137.56539

35? 2020? ? ? ?49? ?7.66944? ? ? ? ? 145.23483

36? 2020? ? ? ?50? ?1.20421? ? ? ? ? 146.43904

37? 2020? ? ? ?51? ?9.04416? ? ? ? ? 155.48320

38? 2020? ? ? ?52? ?2.26250? ? ? ? ? 157.74570

39? 2020? ? ? ? 1? ?1.17026? ? ? ? ? ? 1.17026

40? 2020? ? ? ? 2? 14.22263? ? ? ? ? ?15.39289

41? 2020? ? ? ? 3? ?1.36464? ? ? ? ? ?16.75753

42? 2020? ? ? ? 4? ?2.64862? ? ? ? ? ?19.40615

43? 2020? ? ? ? 5? ?8.69916? ? ? ? ? ?28.10531

44? 2020? ? ? ? 6? ?4.51259? ? ? ? ? ?32.61790

45? 2020? ? ? ? 7? ?2.83411? ? ? ? ? ?35.45201

46? 2020? ? ? ? 8? ?3.64183? ? ? ? ? ?39.09384

47? 2020? ? ? ? 9? ?4.77292? ? ? ? ? ?43.86676

48? 2020? ? ? ?10? ?1.64729? ? ? ? ? ?45.51405

49? 2020? ? ? ?11? ?1.68780? ? ? ? ? ?47.20185

50? 2020? ? ? ?12? ?2.24874? ? ? ? ? ?49.45059

51? 2020? ? ? ?13? ?0.32712? ? ? ? ? ?49.77771

編輯:


經過一番討論后,解決方案應簡化為GroupBy.cumsum:


df['Cummulative Value'] = df.groupby('RY')['Value'].cumsum()


查看完整回答
反對 回復 2023-10-11
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號