我有一个 Dataframe 如下
df = pd.DataFrame(
{'stud_id' : [101, 101, 101, 101,
101, 101, 101, 101],
'sub_code' : ['CSE01', 'CSE01', 'CSE01',
'CSE01', 'CSE02', 'CSE02',
'CSE02', 'CSE02'],
'ques_date' : ['10/11/2022', '06/06/2022','09/04/2022', '27/03/2022',
'13/05/2010', '10/11/2021','11/1/2022', '27/02/2022'],
'revenue' : [77, 86, 55, 90,
65, 90, 80, 67]}
)
df['ques_date'] = pd.to_datetime(df['ques_date'])
我想做以下几点
a)根据我们组织的FY日历计算自定义季度。即,10月至12月为Q1,1月至3月为Q2,4月至6月为Q3,7月至9月为Q4。
B)按studid分组
c)计算前两个季度(从特定日期20/12/2022开始)的收入之和。例如,如果我们在2023Q1
中,我希望分别获得客户在2022Q4
和2022Q3
中的收入之和
所以,我尝试了以下方法
df['custom_qtr'] = pd.to_datetime(df['ques_date'], dayfirst=True).dt.to_period('Q-SEP')
date_1 = pd.to_datetime('20-12-2022')
df['date_based_qtr'] = date_1.to_period('Q-SEP')
pat = '(Q(\d+))'
df['custom_qtr_number'] = df['custom_qtr'].astype(str).str.extract(pat, expand=False)[1]
df['date_qtr_number'] = df['date_based_qtr'].astype(str).str.extract(pat, expand=False)[1]
但我不确定如何重塑 Dataframe 并获得如下输出。您可以看到,我们是2023Q1
,我希望获得sum of revenue from previous two quarters seperately
。这意味着,收入分别来自2022年第4季度和2022年第3季度
1条答案
按热度按时间myzjeezk1#
对于前2个季度,用
custom_qtr
减去date_based_qtr
,转换为整数,并通过1,2
测试成员资格,最后一次旋转: