python - 使用 Pandas 计算一组计数的情况

标签 python python-3.x pandas group-by case

我是Python的初学者, 我正在尝试仅在一个代码行中计算打开率(两个不同计数之间的比率)。 我的数据框是这样的:

   df = pd.DataFrame([
    (142, 1, 'open' , 'Mobile'),
    (144, 2, 'open' , 'Mobile'),
    (144, 1, 'delivered', 'Web'),
    (142, 1, 'delivered', 'Mobile'),
    (142, 2, 'delivered', 'Web'),
    (144, 1, 'open', 'Web'),
    (142, 2, 'open', 'Mobile')
], columns=['sent_mail_id', 'customer_id', 'event' , 'Tool_used'])

我想使用 Pandas 按 Tool_used 列分组时计算打开率。 在 SQL 语言中是这样的:

  select 
  Tool_used ,  
  count(distinct case when event='open' then sent_mail_id end)/count(distinct case when 
  event='delivered' then sent_mail_id end)
  from df
  group by 1

请注意,由于需要唯一的计数,因此我需要单独计算 sent_mail_id。 谢谢

最佳答案

看看这是否是您所需要的,在每个组中有一列打开率:

df1 = ((df.loc[df['event'] == 'open'].groupby('Tool_used')['event'].count() 
       / 
       df.loc[df['event'] == 'delivered'].groupby('Tool_used')['event'].count())
       .to_frame(name='open rate ratio')
      ).reset_index()

结果:

print(df1)



  Tool_used  open rate ratio
0    Mobile              3.0
1       Web              0.5

关于python - 使用 Pandas 计算一组计数的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67483523/

相关文章:

python - Matplotlib 更改条形之间的间隙并添加黑色轮廓

python - 按两个条件拆分字符串 - 通配符

python - 将月份间隔除以其他列中的值

python - TensorBoard 中图像的列和行是什么意思?

python - 日期时间误差范围

python gettext : specify locale in _()

python - 为什么我收到错误消息 : list index out of range in Python

python-3.x - 如何在 Tensorflow 中输出预测?

python - 如何根据另一个数据帧计算一个数据帧中的变量?

python - 使用 pandas python 从文件中读取特定日期行