当前位置: 首页 > 面试题库 >

熊猫Groupby如何在DataFrame中显示零计数

汪修诚
2023-03-14
问题内容

我有以下熊猫数据框:

Name   | EventSignupNo | Attended | Points
Smith  | 0145          | Y        | 20.24
Smith  | 0174          | Y        | 29.14
Smith  | 0239          | N        | 0
Adams  | 0145          | N        | 0
Adams  | 0174          | Y        | 33.43
Morgan | 0239          | Y        | 31.23
Morgan | 0244          | Y        | 23.15

我想计算的是每人参加和未参加的活动数量,以及每人的总积分。所以我做一个groupby:df.groupby([Name, Attended]).agg({"Attended": "count", "Points": "sum"}).rename(columns = {"Attended: "Count"}).reset_index()

这会给我类似的东西:

Name   | Attended | Count | Points
Smith  | Y        | 2     | 49.38
Smith  | N        | 1     | 0
Adams  | Y        | 1     | 33.43
Adams  | N        | 1     | 0
Morgan | Y        | 2     | 54.38

但我想要类似的东西:

Name   | Attended | Count | Points
Smith  | Y        | 2     | 49.38
Smith  | N        | 1     | 0
Adams  | Y        | 1     | 33.43
Adams  | N        | 1     | 0
Morgan | Y        | 2     | 54.38
Morgan | N        | 0     | 0

我尝试使用pd.MultiIndex尝试填充丢失的零计数,但无济于事。我已经阅读了其他类似的问题,但是在使用MultiIndex处理连续点列时遇到了麻烦。任何想法如何做到这一点?


问题答案:

您可以使用groupby+做到这一点agg。为了您与精确的输出Y,并N在每个级别,你需要reindex

g = df.groupby(['Name', 'Attended'], sort=False).Points.agg(['count', 'sum'])

g
                 count    sum
Name   Attended              
Smith  Y             2  49.38
       N             1   0.00
Adams  N             1   0.00
       Y             1  33.43
Morgan Y             2  54.38



idx = pd.MultiIndex.from_product([g.index.levels[0], ['Y', 'N']])

idx
MultiIndex(levels=[['Adams', 'Morgan', 'Smith'], ['N', 'Y']],
           labels=[[2, 2, 0, 0, 1, 1], [1, 0, 1, 0, 1, 0]])


g.reindex(idx, fill_value=0)

          count    sum
Smith  Y      2  49.38
       N      1   0.00
Adams  Y      1  33.43
       N      1   0.00
Morgan Y      2  54.38
       N      0   0.00


 类似资料:
  • 问题内容: 我在csv文件中有这样的数据 我可以像这样阅读和分组 我懂了 我希望这个(顺序无所谓) 我想知道是否有可能算零次 问题答案: 你可以用与: 如果您需要使用输出:

  • 我必须根据以下col1、col2和loc的数据进行分组,并计算col3中的项数。此外,还应考虑开始和结束日期,即日期应在2021 1月1日至2021 1月31日之间。最终结果应显示在col4中。 数据 预期输出

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

  • 问题内容: 在这里,我有一个与熊猫有关的情节工作,例如: 是具有索引的数据帧的对象,我想要一个简单的二维图,具有两列,一个是,另一个是。 是字符串类型,包含汉字,而类型是integer。 如何正常显示汉字? 问题答案: 我的解决方法是这样的: 基本上,您需要为中文字符指定有效字体。

  • 问题内容: 我有一个包含以下信息的数据框: 我想根据索引插入数据帧中的值, 但仅在每个文件组中 。 插值,我通常会做 和我一起做 我希望插入的数据帧看起来像这样: NaN仍然存在于t = 6的位置,因为它们是file2组中的第一项。 我怀疑我需要使用“应用”,但是还无法确切地知道如何… 任何帮助,将不胜感激。 问题答案:

  • 问题内容: 我认为这是一个非常基本的问题,但我似乎找不到解决方案。 我有一个类似于以下内容的熊猫数据框: 它创建一个像这样的表: 我正在尝试创建一个表,该表表示该数据帧中不同值的数量。所以我的目标是这样的: 但是,我找不到正确的功能来实现这一目标。我试过了: 这将产生一个具有3行(按预期)但没有“ count”列的表。我不知道如何在该计数栏中添加。有人可以指出我正确的方向吗? 问题答案: 您可以使