我有一个看起来像这样的数据框:
我想为每个状态创建另一列“ engaged_percent”,这基本上是唯一的engaged_count数除以每个特定状态的user_count数。
我尝试执行以下操作:
def f(x):
engaged_percent = x['engaged_count'].nunique()/x['user_count']
return pd.Series({'engaged_percent': engaged_percent})
by = df3.groupby(['user_state']).apply(f)
by
但这给了我以下结果:
我想要的是这样的:
user_state engaged_percent
---------------------------------
California 2/21 = 0.09
Florida 2/7 = 0.28
我认为我的方法是正确的,但是我不确定为什么我的结果会像第二张图所示那样出现。
任何帮助将非常感激!提前致谢!
怎么样:
user_count=df3.groupby('user_state')['user_count'].mean()
#(or however you think a value for each state should be calculated)
engaged_unique=df3.groupby('user_state')['engaged_count'].nunique()
engaged_pct=engaged_unique/user_count
(您也可以通过多种方式在一行中完成此操作)
您最初的解决方案几乎可以用,只是将值除以整个user count
序列。因此,您获得的是系列而不是值。您可以尝试以下微小变化:
def f(x):
engaged_percent = x['engaged_count'].nunique()/x['user_count'].mean()
return engaged_percent
by = df3.groupby(['user_state']).apply(f)
by
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句