2014-08-29 46 views
1

我写了一个lambda函数,应该很快,但这需要很长时间。有没有更好的方法来写这个?这个lambda函数有什么问题?熊猫和Python数据框

fn = lambda x: shape(df[df.CustomerCard_Num == x.CustomerCard_Num])[0] 
df['tottrans'] = df.apply(fn, axis = 1) 

基本上,我有一个很大的事务数据库(行)。一组行可能对应于不同的客户(客户卡号,如果df中的一列,多行可能具有相同的df.CustomerCard_Num)。

我想用此lambda函数来计算每个客户的行数。但它似乎并不快。我应该使用groupby吗?

+1

只是做'df.CustomerCard_Num.value_counts()' – EdChum 2014-08-29 19:49:36

+0

我爱你,先生。 – robertevansanders 2014-08-29 19:51:12

+0

作为一个侧面说明,为什么你用'lambda'而不是'def'来写这个(它不是匿名的,它不在表达式中使用,它不是瞬态的)。而且,鉴于您将问题标记为'lambda',您似乎认为它可能与您在此处使用'lambda'的问题有关。 (它不是,但如果你认为它可能,为什么不把它写成更习惯的方式,看看?) – abarnert 2014-08-29 19:51:34

回答

4

有一个内置的方式:

df.CustomerCard_Num.value_counts() 

docs