根据第一个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时,它真的很慢。我能做些什么来加快速度?感谢。
答案 0 :(得分:1)
您可以使用groupby并计算df_retention数据帧中的行数。假设account
是df_account
df_account.set_index('account',inplace=True)
df_account['retention_total'] = df_retention.groupby('account').count()