【发布时间】:2023-03-30 22:35:01
【问题描述】:
我有一个 Pandas 数据框,其中包含有关通话的数据。每个呼叫都有一个唯一的 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
这可行,但是这将应用于大数据集。有没有办法让这更有效。通过矢量化?
【问题讨论】:
标签: python pandas dataframe vectorization