我正在努力解决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万行,结果需要永远计算,我想知道我是否做错了,是否有办法更快地完成这项任务
答案 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中效率更高。