【发布时间】:2018-09-15 15:33:09
【问题描述】:
给定一个与此类似的DataFrame(但有超过一百万行和大约 140000 个不同的groups)
df_test = pd.DataFrame({'group': {1:'A', 2:'A', 3:'A', 4:'A', 5:'B', 6:'B'},
'time' : {1:1, 2:3, 3:5, 4:23, 5: 7, 6: 12}})
对于每个group,我想找出time(在我的真实df中实际上是dtype('<M8[ns]'))和group的最短时间之间的区别。
我使用groupby 和transform 管理它,如下所示:
df_test['time_since'] = df_test.groupby('group')['time'].transform(lambda d: d - d.min())
正确产生:
group time time_since
1 A 1 0
2 A 3 2
3 A 5 4
4 A 23 22
5 B 7 0
6 B 12 5
但计算需要将近一分钟。有没有更快/更智能的方法来做到这一点?
【问题讨论】:
-
进行任何 python 计算都会使您的代码变慢,因为必须在数据的每一行上调用这些函数。
标签: python pandas dataframe group-by