如何计算分类值(包括零出现)?

2024-05-19

我想按月计算代码数量。 这是我的示例数据框。

        id    month  code
0     sally    0  s_A
1     sally    0    s_B
2     sally    0   s_C
3     sally    0   s_D
4     sally    0    s_E
5     sally    0   s_A
6     sally    0    s_A
7     sally    0   s_B
8     sally    0   s_C
9     sally    0   s_A

我使用 count() 转换为这个系列。

df.groupby(['id', 'code', 'month']).month.count()

id      code   month  count
sally  s_A      0    12
                1    10
                2     3
                7    15

但是,我想包括零出现,就像这样。

id      code   month  count
sally  s_A      0    12
                1    10
                2     3
                3    0
                4    0
                5    0
                6    0
                7    15
                8    0
                9    0
                10   0
                11   0

您可以使用reindex http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reindex.html与新的Multindex已创建from_product http://pandas.pydata.org/pandas-docs/stable/generated/pandas.MultiIndex.from_product.html:

Notice:
大熊猫的大小和数量有什么区别? https://stackoverflow.com/questions/33346591/what-is-the-difference-between-size-and-count-in-pandas

df = pd.DataFrame({
'month': [0, 0, 0, 0, 1, 1, 1, 2, 2, 7], 
'code': ['s_A', 's_A', 's_A', 's_A', 's_A', 's_A', 's_A', 's_B', 's_B', 's_B'], 
'id': ['sally1','sally1','sally1','sally','sally','sally','sally','sally','sally','sally']})

print (df)
  code      id  month
0  s_A  sally1      0
1  s_A  sally1      0
2  s_A  sally1      0
3  s_A   sally      0
4  s_A   sally      1
5  s_A   sally      1
6  s_A   sally      1
7  s_B   sally      2
8  s_B   sally      2
9  s_B   sally      7

df = df.groupby(['id', 'code', 'month']).size()
n = ['id','code','month']
mux = pd.MultiIndex.from_product([df.index.levels[0],df.index.levels[1], range(13)], names=n)
df = df.reindex(mux, fill_value=0)
print (df)
id      code  month
sally   s_A   0        1
              1        3
              2        0
              3        0
              4        0
              5        0
              6        0
              7        0
              8        0
              9        0
              10       0
              11       0
              12       0
        s_B   0        0
              1        0
              2        2
              3        0
...
...

旧的解决方案:

reindex with unstack http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.unstack.html and stack http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.stack.html,但随后需要一些数据清理:

df = df.groupby(['id', 'code', 'month']).size() \
       .to_frame('count') \
       .unstack([0,1], fill_value=0) \
       .reindex(range(13), fill_value=0) \
       .stack([1,2], dropna=False) \
       .fillna(0) \
       .astype(int) \
       .swaplevel(0,2) \
       .sort_index()
print (df)
                   count
code id     month       
s_A  sally  0          1
            1          3
            2          0
            3          0
            4          0
            5          0
            6          0
            7          0
            8          0
            9          0
            10         0
            11         0
            12         0
     sally1 0          3
            1          0
            2          0
            3          0
            4          0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算分类值(包括零出现)? 的相关文章

随机推荐

  • Python排序算法[重复]

    这个问题在这里已经有答案了 我在Python中实现了不同的排序算法 以更好地理解它们 我想知道Python的内置排序方法实现什么类型的排序 这是一个叫做Timsort http en wikipedia org wiki Timsort由
  • 以编程方式访问 Exchange 文件夹中的存档邮件

    我试图通过 Outlook 2013 的 ActiveX 接口访问给定文件夹中的所有邮件 我使用 Outlook 的消息 API MAPI 来获取所需的文件夹对象 但是 当我浏览此文件夹对象的所有项目时 许多消息丢失了 事实上 MS Exc
  • 自定义帖子类型的 WordPress 自定义字段

    过去有几个人出现过这个问题 但他们的问题的解决方案对我来说不起作用 我已经尝试了很多 在 WordPress 中 我创建了 3 种自定义帖子类型 1 代表 视频 新闻 和 音乐 每个内容都发布到自己的页面 我想添加自定义字段 这样我就可以为
  • 在哪里放置谷歌分析代码[重复]

    这个问题在这里已经有答案了 可能的重复 谷歌分析在头 或身体的末端 https stackoverflow com questions 3173571 google analytics at head or end of body 谷歌分析
  • 如何使用 Razor 将事件添加到按钮?

    我对 asp net core 开发很陌生 我真的不太了解 javascript 我想知道是否有某种方法可以仅使用 C 处理 Html 输入的 OnClick 或 OnChange 这样的输入事件剃刀代码也没有表格 and 仅使用 Razo
  • Android - 保存动态更改布局的状态

    我有一个布局 用户可以在其中添加按钮并将其放置在他们想要的位置 我想允许用户保存他们的布局 以便下次打开应用程序时加载它 有谁知道我是否可以将文件保存到 SD 卡上 或者 我可以使用某种layout getXml 方法并将其放入我的应用程序
  • 如何在Electron WebView中连接到代理?

    因为我可以通过连接到免费代理服务器 或付费 目前用作电子 JS 解决方案作为桌面应用程序 代理列表服务器示例 http proxylist hidemyass com http proxylist hidemyass com 您可以使用 s
  • Pandas - 使用 .isnull()、notnull()、dropna() 删除丢失数据的行不起作用

    这实在是太奇怪了 我尝试了几种从 pandas 数据框中删除丢失数据的行的方法 但它们似乎都不起作用 这是代码 我只是取消注释所使用的方法之一 但这些是我在不同修改中使用的三种方法 这是最新的 import pandas as pd Tes
  • 我可以更改键盘方向吗?

    例如我用这段代码关闭自动旋转 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation interfaceOrientation return NO BOOL sh
  • Git 到 TFS 源代码管理迁移

    我想看看 TFS 如何为我的命令工作 所以我想将我们当前的 GIT 存储库移动到 TFS 数据库 我们使用 GIT 来获得普遍的分支支持 因此我想使用 TFS 2010 来解决该问题 现在的问题是 如何将 GIT 存储库导出到 TFS 显然
  • 需要将smarty文件改为zend文件

    你好 我有 smarty 文件 我需要转换成 zend 如何将 smarty 更改为 zend 它的 tpl 文件 div class form div
  • GNU make 的回溯

    有没有办法让 GNU make 打印导致命令失败时执行的目标的 回溯 我经常处理严重混淆的 makefile 同时解决在新系统上构建软件的可移植性问题 这对于 make 来说似乎是一件非常简单的事情 这将极大地帮助调试 但我找不到任何方法来
  • Firebase 管理 SDK Android

    在 Android 中初始化 Firebase Admin SDK 的代码 Override protected void onCreate Bundle savedInstanceState super onCreate savedIns
  • Web API 和 OData - 传递多个参数

    是否可以让 OData 执行以下操作 我希望能够通过传递可能不是主键的参数来查询 REST 调用 我可以调用 REST 方法吗 比如 gt GetReports 22 2014 or Reports 22 2014 HttpGet ODat
  • 使用 Simulator 时 Xcode 10 中的屏幕截图尺寸错误

    我正在尝试使用 Xcode 10 模拟器为 iTunes 制作屏幕截图 但图像大小错误 我读过Debug gt Optimize Rendering for Window Scale会有帮助 但在 Xcode 中没有这样的选项 有人有这个问
  • html5 canvas 上的错误显示 lineWidth=1

    I have example https developer mozilla org samples canvas tutorial 4 5 canvas linewidth html https developer mozilla org
  • 我可以从命令行调用除 main(String[]) 之外的 java 方法吗?

    我可以调用 java 方法吗 main String 从命令行 如果没有 main 函数 则可以添加一个 main 函数 如果有 则可以在顶部添加一系列 if then 块 public static void main String ar
  • 从字体到跨度(大小和颜色)和背面的正则表达式(VB.NET)

    我正在寻找一个正则表达式 可以将我的字体标签 仅具有大小和颜色属性 转换为具有相关内联CSS的span标签 如果有帮助的话 这将在 VB NET 中完成 我还需要一个正则表达式来实现相反的效果 下面详细说明的是我正在寻找的转换示例 font
  • Flash ActionScript 2 的压缩和解压缩工具

    您是否知道 flash actionscript 2 的任何 zip unzip 组件或脚本 我知道这个图书馆 http ntt cc 2008 01 19 actionscript class library fzip html对于 Fl
  • 如何计算分类值(包括零出现)?

    我想按月计算代码数量 这是我的示例数据框 id month code 0 sally 0 s A 1 sally 0 s B 2 sally 0 s C 3 sally 0 s D 4 sally 0 s E 5 sally 0 s A 6