【发布时间】:2020-06-19 20:04:00
【问题描述】:
如何让 Groupby Apply 运行得更快,或者如何以不同的方式编写它?
import numpy as np
import pandas as pd
df = pd.DataFrame({'ID':[1,1,1,1,1,2,2,2,2,2],\
'value':[1,2,np.nan,3,np.nan,1,2,np.nan,4,np.nan]})
result = df.groupby("ID").apply(lambda x: len(x[x['value'].notnull()].index)\
if((len(x[x['value']==1].index)>=1)&\
(len(x[x['value']==4].index)==0)) else 0)
输出:
Index 0
1 3
2 0
我的程序现在运行得很慢。我可以让它更快吗?我过去在使用 groupby() 之前进行了过滤,但在这种情况下我没有看到一种简单的方法。
【问题讨论】:
-
有最近引入的parallel_apply -> towardsdatascience.com/…
-
嗨。你能解释一下你想要达到的目标吗?使用 Pandas 的矢量化方法可以提高速度
-
嗨。分组后,如果组包含一个值(在本例中为 1)并且不包含另一个值(在本例中为 4),我想计算组中值的数量。如何使用 Pandas 的矢量化方法?
标签: python pandas pandas-groupby pandas-apply