我有一个关于通话的数据框。每个呼叫都有一个唯一的ID,每个客户都有一个ID(但可以有多个呼叫)。第三栏是一天。对于每个客户,我要计算7天内的最大通话次数。你知道吗
我一直在使用以下代码计算每行通话后7天内的通话次数:
df['ContactsIN7Days'] = df.apply(lambda row: len(df[(df['PersonID']==row['PersonID']) & (abs(df['Day'] - row['Day']) <=7)]), axis=1)
输出:
CallID Day PersonID ContactsIN7Days
6 2 3 2
3 14 2 2
1 8 1 1
5 1 3 2
2 12 2 2
7 100 3 1
这是可行的,但是这将应用于大数据集。有没有办法提高效率。通过矢量化?你知道吗
这是一个复杂的问题,但我认为有效的解决方案。请注意,您的数据帧的顺序因此被修改,
Day
列被修改为timedelta数据类型:从数据帧
df
开始:首先将
Day
修改为timedelta序列:然后,使用^{} ,将数据帧与7天内每个人的调用计数合并。要获得此结果,请使用频率为7天的} :
groupby
和^{结果
new_df
如下所示:相关问题 更多 >
编程相关推荐