1 回答
TA贡献1848条经验 获得超2个赞
使用交叉表,我只能管理下表。
a = data.set_index('login_month').groupby('id').resample('M').last().ffill().drop('id', axis=1).reset_index()
pd.crosstab(a.group_month, a.login_month)
输出
login_month 2013-05-31 2013-06-30 2013-07-31 2013-08-31 2013-09-30 2013-10-31
group_month
2013-05-01 1 1 1 0 0 0
2013-06-01 0 1 1 1 2 2
但是,我们可以得到您需要的值,如下所示。
a = data.set_index('login_month').groupby('id').resample('M').last().ffill().drop('id', axis=1).reset_index()
pd.DataFrame(a[(a['login_month'] >= a['group_month'])].groupby(['group_month', 'login_month'])['id'].count()).unstack().fillna(method='ffill',axis=1).fillna(value=0)
输出
login_month 2013-05-31 2013-06-30 2013-07-31 2013-08-31 2013-09-30 2013-10-31
group_month
2013-05-01 1.0 1.0 1.0 1.0 1.0 1.0
2013-06-01 0.0 1.0 1.0 1.0 2.0 2.0
添加回答
举报