我有一个包含几列的数据框,包括用户ID(id)和时间戳(startTime)。我想检查每个用户的数据(df行)跨越多少天。
我目前正在通过用'id'分割df,然后在循环中为每个子集dfs计算以下内容来做到这一点:
days = len(df.startTime.dt.date.unique())
如何在不拆分数据帧的情况下更有效地执行此操作?我正在处理相当大的数据帧,我担心这会花费太多时间。我已经看过groupby函数,但是我走得并不远。我尝试过类似的事情:
result = df.groupby('id').agg({'days': lambda x: x.startTime.dt.date.unique()})
...但是显然不起作用。
答案 0 :(得分:2)
您可以在drop_duplicates
之前使用value_counts
df['New Date'] = df['startTime'].dt.date
result = df.drop_duplicates(['ID','New Date']).ID.value_counts()