以下資料集中的列將代表:
A:合約開倉日期;
B:合約終止日期;
C: 關聯合約的唯一賬戶 ID(可以有多個合約針對一個 ID)
D:合同期內的月收入 - 為簡單起見,假設從第一個月合同產生的收入直到合同結束前一個月
Start Date contract end date Unique Account Field MRR
1/2/2013 1/2/2015 50e55 195.00
1/2/2013 1/2/2014 4ee75 50.00
1/2/2013 1/2/2014 4f031 75.00
1/2/2013 1/2/2016 4c3b2 133.00
1/2/2013 1/2/2016 49ec8 132.00
1/3/2013 1/3/2014 49fc8 59.00
1/4/2013 1/4/2015 49wc8 87.00
12/27/2013 12/27/2014 50bf7 190.00
12/27/2013 12/27/2014 49cc8 179.00
12/27/2013 12/27/2014 49wc8 147.00
etc....
我想計算以下內容:
1. 2013 年 1 月和 2014 年 12 月之間的月收入是多少?
2. 2013 年 1 月至 2014 年 12 月期間,每個月有多少活躍合約(當月產生的收入)?
3. 2013 年 1 月至 2014 年 12 月期間,每月有多少活躍賬戶(至少從一份合同中產生收入)?
我嘗試了以下代碼:我能夠使用 sum() 來獲得收入,但我不知道除此之外還能做什么。
from datetime import date
df['date'] = pd.to_datetime(df['Start Date'])
df.groupby(df['Start Date'].dt.strftime('%B'))['MRR'].sum().sort_values()
我從上面的代碼得到的結果:
Start Date
February 221744
January 241268
July 245811
August 247413
April 249702
March 251219
June 251494
May 259149
September 263395
October 293990
November 296590
December 311659
我需要計算以下內容。我怎樣才能在 python 中實作這一點?
uj5u.com熱心網友回復:
也許你想要這樣的東西?
date_range = (df['date'] >= "2013-01-01") & (df['date'] <= "2014-12-31")
df[date_range].groupby(df['date'].dt.strftime('%B')).agg(
MRR=('MRR', 'sum'),
Contracts=('date', 'count'),
Accounts=('Unique Account Field', 'nunique')
)
輸出 :-
MRR Contracts Accounts
date
December 516.0 3 3
January 731.0 7 7
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386208.html
上一篇:Pandas資料框聚合
