簡體   English   中英

使用 .shift() 選項將當前月利率與基本利率(舊利率)進行比較

[英]Compare current month rate against a base rate (old rate) using .shift() option

我有大量的項目數據集,其中包含員工特定的每月計費率以及計費時間。 我正在尋找創建 python 代碼,它可以檢測員工的費率變化並通過每月與舊費率(基本費率)進行比較來得出增量增加(新舊)。 我嘗試使用以下代碼:

我的數據集 (df) 的簡化版本如下所示:

   Proj_ID Empl_ID    Bill_Date Bill_Rate Bill_hours
    1234   780313     1/31/2020    20        174.5
    1234   780313     2/29/2020    25        160
    1234   780313     3/31/2020    25        130
    1234   780313     4/30/2020    25        145
    7890   832123     1/31/2020    10        160
    7890   832123     2/29/2020    15        125
    7890   832123     3/31/2020    15        138
    7890   832123     4/30/2020    15        156

以項目和員工 ID 組合作為唯一標識符的分配鍵:

df['key'] = df['Project_ID'] + df['Employee_ID']

使用np.where & .shift創建下面的代碼,通過將當前速率與“鍵”的先前速率進行比較來檢測速率增加,以檢測增加(Y/N)並獲得當月的增量收入:

df['Inc_Y/N'] = np.where((df['Bill_Rate'] - df.groupby(['key']).Bill_Rate.shift(1))>0, 'Yes', 'No')
            
df['Inc_rev'] = (df['Bill_Rate'] - df.groupby(['key']).Bill_Rate.shift(1))*df['Bill_hours']

基於上述,代碼能夠檢測到 2 月(對於項目 1234)和 3 月(對於項目 7890)和月份的增量增長,如下所示:

Proj_ID Emp_ID Bill_Date Bill_Rate Bill_hours Inc_Y/N Inc_rev
 1234   780313 1/31/2020    20       174.5    No      0
 1234   780313 2/29/2020    25        160     Yes     800
 1234   780313 3/31/2020    25        130     No      0
 1234   780313 4/30/2020    25        145     No      0
 7890   832123 1/31/2020    10        160     No      0
 7890   832123 2/29/2020    10        125     No      0
 7890   832123 3/31/2020    15        138     Yes     690
 7890   832123 4/30/2020    15        156     No      0

但是,在上述 output 中,在利率上漲之后的幾個月內,例如:項目 1234 - 代碼將 3 月 31 日的利率 (25) 與之前的 2 月 29 日 (25) 的利率進行比較,而不是 1 月 31 日 (20) 到期的舊利率我將那幾個月的增量收入設為 0。

誰能告訴我我哪里出錯了?

我相信這就是你想要做的:

df["first_month_rate"] = df.groupby("Proj_ID").Bill_Rate.transform("first")
df["Inc_rev"] = (df.Bill_Rate - df.first_month_rate) * df.Bill_hours

print(df)

Output:

   Proj_ID  Empl_ID  Bill_Date  Bill_Rate  Bill_hours  first_month_rate  Inc_rev
0     1234   780313 2020-01-31         20       174.5                20      0.0
1     1234   780313 2020-02-29         25       160.0                20    800.0
2     1234   780313 2020-03-31         25       130.0                20    650.0
3     1234   780313 2020-04-30         25       145.0                20    725.0
4     7890   832123 2020-01-31         10       160.0                10      0.0
5     7890   832123 2020-02-29         15       125.0                10    625.0
6     7890   832123 2020-03-31         15       138.0                10    690.0
7     7890   832123 2020-04-30         15       156.0                10    780.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM