根据pandas数据框中的计算输出创建变量

时间:2017-06-19 11:34:46

标签: python pandas reshape melt

我有一个如下所示的数据框:

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-如何返回这些计数并将它们存储在新列中?

任何提示?

1 个答案:

答案 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