我有一个如下所示的数据框:
df = pd.DataFrame( {'ID':range(1,366), 'No_of_Visits': np.random.randint(1,100, 365), 'Date':pd.date_range(pd.datetime.today(), periods=365).tolist() })
我想计算每三个月的访问次数,并将结果作为列返回,如下所示:
df = ID, No_of_Visits, Date, Count_first _3_Month, Count_Second_3_Months, Count_third_3_Months, Count_forth_3_Months
以下是我的尝试:
我的想法是提取月份,所以我这样做了
df['Month'] = df['Date'].dt.month
然后groupby month和sum:
df['monthly_count'] = df.groupby(['Month'])['No_of_Visits'].transform('sum')
我现在被卡住了:
1-我希望有一个参数来控制我可以计算多少个月的访问次数(例如3个月,6个月等)
2-如何返回这些计数并将它们存储在新列中?
任何提示?
答案 0 :(得分:0)
这样的事情对你有用吗?
df = df.set_index('Date')
df_3m = df.groupby(pd.TimeGrouper('3M', closed='left'))['No_of_Visits'].sum().reset_index().T
df_3m.columns = ['First 3 Months', 'Second 3 Months', 'Third 3 Months', 'Fourth 3 Months', 'Fifth 3 Months']
输出:
First 3 Months Second 3 Months Third 3 Months \
Date 2017-08-31 00:00:00 2017-11-30 00:00:00 2018-02-28 00:00:00
No_of_Visits 3410 4443 4296
Fourth 3 Months Fifth 3 Months
Date 2018-05-31 00:00:00 2018-08-31 00:00:00
No_of_Visits 4754 996