根据id列中的值将自定义函数应用于数据框

时间:2018-08-14 17:50:52

标签: python python-3.x pandas dataframe

我有一个包含几列的数据框,包括用户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()})

...但是显然不起作用。

1 个答案:

答案 0 :(得分:2)

您可以在drop_duplicates之前使用value_counts

df['New Date'] = df['startTime'].dt.date
result = df.drop_duplicates(['ID','New Date']).ID.value_counts()