2017-06-19 70 views
1

我有一个数据帧,看起来像这样:创建varaibles基于对大熊猫的数据帧计算输出

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() }) 

我想指望每个3个月访问次数,并返回结果为一列是这样的:

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月和金额:

df['monthly_count'] = df.groupby(['Month'])['No_of_Visits'].transform('sum') 

我现在被困监守:

1 - 我想有一个用于控制参数有多少个月可以指望的访问次数(例如3个月,6个月等)

2-如何返回这些计数并将它们存储在新列中?

任何提示?

回答

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