计算每天在熊猫中看到的新ID的数量

时间:2016-04-18 17:59:44

标签: python pandas

鉴于以下数据,每天有哪些用户活跃,我想使用Pandas计算每天新用户的数量。

OnPropertyChanged

我看到它的方式,步骤是:

  1. 每天计算最大用户ID: df.groupby('Day')。UserID.max()
  2. 使用前一天的最大用户ID过滤数据(初始化为0): 此处我不知道如何使用Pandas
  3. 计算过滤数据集中唯一身份用户的登录次数。的 df.filtered.groupby( '日')。UserID.nunique()
  4. 有没有一种干净的方法来实现这一目标?

2 个答案:

答案 0 :(得分:6)

这个构建为一个表,给出每个ID首次出现的日期,按天分组,然后计算相应的行。

df = pd.DataFrame([(1, "A"), (1, "B"), 
                   (1, "C"), (1, "C"), 
                   (2, "A"), (2, "B"), 
                   (2, "D"), (2, "A"), 
                   (2, "E"), (3, "B"), 
                   (3, "D"), (3, "F")], 
                  columns=["day", "userid"]) 

(df
  .sort_values('day')
  .groupby('userid')
  .first()
  .rename(columns={"day": "first_seen"})
  .groupby('first_seen').size()
)

答案 1 :(得分:1)

假设数据框首先按Exception in thread "Thread-2" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(Unknown Source) at java.util.ArrayList$Itr.next(Unknown Source) at Users.removeUsers(AuctionServer.java:211) //Relates to top of for loop at ClientHandler.run(AuctionServer.java:435) 排序,您可以对Day进行分组(设置UserID),然后将结果的索引设置为as_index=False。每天为您提供每个新用户。

Day

然后获取新用户总数:

df2 = df.groupby('UserID', as_index=False).Day.first().set_index('Day') 
>>> df2
    UserID
Day       
1        A
1        B
1        C
2        D
2        E
3        F