如何按注册年份分组对‘上次登录间隔天数’列应用value_counts?
问题
假设我有如下DataFrame:
Days since last login Year of registration 1 2010 2 2010 4 2010 1 2010 1 2011 10 2011
请问如何对‘Days since last login’列应用value_counts,使其按各注册年份分别计算?我认为可以用unique()函数和for循环解决,但想知道更优雅的实现方案。
解决方案
直接使用groupby结合value_counts是最简洁优雅的实现方式,无需手动循环:
df.groupby('Year of registration')['Days since last login'].value_counts()
这段代码会先按Year of registration列分组,然后对每个分组内的Days since last login列统计值的出现频次。返回结果是一个多级索引的Series,示例输出如下:
Year of registration Days since last login 2010 1 2 2 1 4 1 2011 1 1 10 1 Name: count, dtype: int64
如果希望结果以宽表形式展示(将登录间隔天数作为列),可以追加unstack()方法,并用fill_value填充缺失值:
df.groupby('Year of registration')['Days since last login'].value_counts().unstack(fill_value=0)
对应的输出为:
Days since last login 1 2 4 10 Year of registration 2010 2 1 1 0 2011 1 0 0 1
内容的提问来源于stack exchange,提问作者Vladimir Demidov
相关产品推荐
相关产品推荐

