应用函数计算DataFrame过滤器的长度

时间:2017-12-13 02:34:14

标签: pandas

根据第一个df的值,使用另一个df的过滤长度来创建新的pandas列的最佳方法是什么?

df_account有帐号

df_retention为帐号有效的每个日期都有行

我正在尝试在df_account上创建一个新列,其中包含帐户处于活动状态的总天数。使用.apply似乎非常慢。

def retention_count(x):
    return len(df_retention[df_retention['account'] == x])

df_account['retention_total'] = df_account['account'].apply(retention_count)

在少量行上,这可行,但当我的df_account行超过750k时,它真的很慢。我能做些什么来加快速度?感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用groupby并计算df_retention数据帧中的行数。假设account是df_account

的索引
df_account.set_index('account',inplace=True)
df_account['retention_total'] = df_retention.groupby('account').count()