gpt4 book ai didi

python - 如何计算 Pandas 中的逆累积和

转载 作者:行者123 更新时间:2023-12-02 16:51:58 25 4
gpt4 key购买 nike

我正在尝试找到一种方法来计算 Pandas 的逆 cumsum。这意味着从下到上应用 cumsum。我面临的问题是,我正在尝试从上到下查找西类牙每个月的工作日数(第一个工作日 = 1、第二个 = 2、第三个 = 3 等...)和从下到上(最后一个工作日 = 1,最后一天 = 2,等等...)。到目前为止,我设法让从上到下的顺序工作,但无法让逆序工作,我搜索了很多但找不到执行逆累积和的方法:

import pandas as pd
from datetime import date
from workalendar.europe import Spain
import numpy as np
cal = Spain()
#print(cal.holidays(2019))
rng = pd.date_range('2019-01-01', periods=365, freq='D')
df = pd.DataFrame({ 'Date': rng})
df['flag_workable'] = df['Date'].apply(lambda x: cal.is_working_day(x))
df_workable = df[df['flag_workable'] == True]
df_workable['month'] = df_workable['Date'].dt.month
df_workable['workable_day'] = df_workable.groupby('month')['flag_workable'].cumsum()
print(df)
print(df_workable.head(30))

1 月份的产出:

         Date  flag_workable  month  workable_day
1 2019-01-02 True 1 1.0
2 2019-01-03 True 1 2.0
3 2019-01-04 True 1 3.0
6 2019-01-07 True 1 4.0
7 2019-01-08 True 1 5.0

一月最后几天的示例:

         Date  flag_workable  month  workable_day
24 2019-01-25 True 1 18.0
27 2019-01-28 True 1 19.0
28 2019-01-29 True 1 20.0
29 2019-01-30 True 1 21.0
30 2019-01-31 True 1 22.0

这将是应用逆累积后的预期输出:

         Date  flag_workable  month  workable_day  inv_workable_day
1 2019-01-02 True 1 1.0 22.0
2 2019-01-03 True 1 2.0 21.0
3 2019-01-04 True 1 3.0 20.0
6 2019-01-07 True 1 4.0 19.0
7 2019-01-08 True 1 5.0 18.0

一月的最后几天:

         Date  flag_workable  month  workable_day  inv_workable_day
24 2019-01-25 True 1 18.0 5.0
27 2019-01-28 True 1 19.0 4.0
28 2019-01-29 True 1 20.0 3.0
29 2019-01-30 True 1 21.0 2.0
30 2019-01-31 True 1 22.0 1.0

最佳答案

在分组之前反转DataFrame的行顺序,以便在每个月内以相反的顺序计算cumsum

df['inv_workable_day'] = df[::-1].groupby('month')['flag_workable'].cumsum()
df['workable_day'] = df.groupby('month')['flag_workable'].cumsum()

# Date flag_workable month inv_workable_day workable_day
#1 2019-01-02 True 1 5.0 1.0
#2 2019-01-03 True 1 4.0 2.0
#3 2019-01-04 True 1 3.0 3.0
#6 2019-01-07 True 1 2.0 4.0
#7 2019-01-08 True 1 1.0 5.0
#8 2019-02-01 True 2 1.0 1.0

关于python - 如何计算 Pandas 中的逆累积和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58271721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com