当前位置: 首页 > 知识库问答 >
问题:

熊猫求和再除以唯一计数

柴衡
2023-03-14

我有一个df看起来是这样的:

test = pd.DataFrame({'date': ['1/07/2019', '1/08/2019', '1/08/2019','1/07/2019', '1/08/2019', '1/09/2019', '1/07/2019', '1/07/2019'],
                     'basket_id': ['AB789', 'CD674', 'KL237', 'AB789', 'CD674', 'RS234', 'ST089', 'OP448'],
                     'product_id': ['1839', '0368', '5360', '2524', '1036', '1184', '9280', '7721'],
                   'revenue': [400, 500, 350, 200, 100, 450, 50, 150]})
print(test)

现在我想创建一个名为temp_test的df,它显示日期、收入总和、唯一篮子ID的计数,最后还有一列每个篮子的平均收入。

temp_test = test.groupby(['date']).agg({'revenue': sum, 'basket_id': 'nunique'}).reset_index()
temp_test['rev_per_basket'] = test['revenue'] / test.groupby(['date'])['basket_id'].nunique()
print(temp_test)

但是,我的rev_per_basket列只显示了NAN。理想情况下,它应该显示226.66、475和450。知道哪里出了问题吗?谢谢!

共有1个答案

胡志
2023-03-14

你想

temp_test['rev_per_basket'] = temp_test.revenue.divide(temp_test.basket_id)
 类似资料:
  • 我必须根据以下col1、col2和loc的数据进行分组,并计算col3中的项数。此外,还应考虑开始和结束日期,即日期应在2021 1月1日至2021 1月31日之间。最终结果应显示在col4中。 数据 预期输出

  • 问题内容: 我遇到了一个看似简单的问题:在熊猫数据框中删除唯一的行。基本上与的相反。 假设这是我的数据: 当A和B唯一时,我想删除行,即我只保留行1和2。 我尝试了以下方法: 但是我只能得到第2行,因为唯一性是0、1和3! 问题答案: 选择所有重复行的解决方案: 您可以使用子集和参数来选择所有重复项: 解决方案: 对所有唯一行进行了一些修改的解决方案:

  • 问题内容: 我已经阅读了一个csv文件,并将其旋转为以下结构: 结果部分: 我想通过每一行在第0列到第13列之间求和,然后将每个单元格除以该行的总和。我仍然习惯于大熊猫。如果我理解正确,那么在执行此类操作时应该尝试避免for循环吗?换句话说,我该如何以“熊猫”方式做到这一点? 问题答案: 请尝试以下操作: 或者,您可以执行以下操作: 或者只是从头开始: 将列之类的标题更改为标题应该类似。

  • 问题内容: 我将数据存储在pandas数据框中,如下所示: 所以,我的数据看起来像这样 我想将其转换为另一个数据框。预期的输出可以在以下python脚本中显示: 因此,我的预期输出如下所示 实际上,我可以使用以下命令来找到所有组合并对其进行计数: 但是,事实证明,此类组合在单个列中。我想将组合中的每个值分隔到不同的列中,并且还要为计数结果增加一列。有可能这样做吗?请问您有什么建议吗?先感谢您。 问

  • 问题内容: 我有一个看起来像这样的DataFrame: 我想将其转换为对属于某些bin的视图进行计数,如下所示: 我试过了: 但它仅提供汇总计数,而不提供用户计数。如何获得用户的垃圾箱计数? 总计计数(使用我的真实数据)如下所示: 问题答案: 您可以按垃圾箱 和 用户名分组,计算分组大小,然后使用:

  • 问题内容: 假设我有一个用户活动日志,我想生成一个总持续时间和每天唯一身份用户数量的报告。 汇总持续时间非常简单: 我想做的是同时计算持续时间并计算不重复次数,但我似乎找不到count_distinct的等效项: 这可行,但是肯定有更好的方法,不是吗? 我在想,我只需要提供一个将Series对象的不同项目的计数返回给聚合函数的函数,但是我对各种库的接触并不多。另外,似乎groupby对象已经知道此