加快熊猫的循环

时间:2014-05-22 22:53:28

标签: python pandas dataframe

我正在努力解决Python Pandas上的一个问题,我有一个表示网站连接的DataFrame:

No.      IDs      date                    duration_since_last_visit
 1      4678     2012-11-30 23:59:59                0
 2      4703     2012-11-30 23:59:23                0
 3      4678     2012-11-30 23:58:46                73s
 4      5803     2012-11-30 23:58:19                0
 5      4678     2012-11-30 23:58:07                39s

我正试图找到一种方法来了解每个身份证号码的平均访问时间。我设法做到这一点归功于:

for i in df['IDs'].values:
    report['mean_time_visits']=report[report['IDs']==i].duration_since_last_visit.mean()

但我的数组有35万行,结果需要永远计算,我想知道我是否做错了,是否有办法更快地完成这项任务

1 个答案:

答案 0 :(得分:2)

不需要循环。

In [12]: df.groupby('IDs')['duration_since_last_visit'].mean()
Out[12]: 
IDs
4678    37.333333
4703     0.000000
5803     0.000000
Name: duration_since_last_visit, dtype: float64

您会发现矢量化操作在pandas / numpy中效率更高。

相关问题