在 pandas 数据框中进行 groupby 后滚动前 3 个月的唯一计数

2024-06-28

以下是数据框

Date        Name     data
01/01/2017  Alpha     A      
02/01/2017  Alpha     A
03/01/2017  Alpha     B
01/01/2017  Beta      A
01/20/2017  Beta      D
03/01/2017  Beta      C
04/01/2017  Beta      C
05/01/2017  Beta      B

预期输出:

Date        Name     data
Jan 2017     Alpha     1      
Feb 2017     Alpha     1
Mar 2017     Alpha     2
Jan 2017     Beta      2
Mar 2017     Beta      3
Apr 2017     Beta      1
May 2017     Beta      2

我正在寻找 3 个月滚动基础上按“名称”分组的“数据”的唯一计数。考虑“2017 年 3 月”和“名称”->“Beta”的示例。因此,名称“Beta”所考虑的月份是 2017 年 1 月、2017 年 2 月、2017 年 3 月。唯一计数为 3。其他也类似。请注意,这 3 个月的“数据”计数应该是唯一的

任何帮助表示赞赏。


每月组和Name,取消堆叠并重新采样到月份,因此所有月份都存在,并且每个月份都会获得一列Name

df2 = df.groupby([pd.TimeGrouper('M'), 'Name', ])['data'].apply(set).unstack().resample('M').sum()

df2

Name        Alpha   Beta
Date        
2017-01-31  {A}     {A, D}
2017-02-28  {A}     None
2017-03-31  {B}     {C}
2017-04-30  None    {C}
2017-05-31  None    {B}

多个迭代器

一些 itertools 魔法可以在同一列上多次迭代

def multiple_iterator(iterable, r=2):
    iterators = itertools.tee(iterable, r)
    try:
        for i, it in enumerate(iterators):
            for j in range(i):
                next(it)
    except StopIteration:
        return None
    return iterators

真正的工作

def get_unique_items_rolling(df, period):
    for col_name, col in df2.iteritems():
        s = pd.Series()
#         print(f'---{col_name}---')
        for idx, *iterators in zip(col.index[period-1:], *multiple_iterator(col, period)):
            result = set(itertools.chain.from_iterable(i for i in iterators if pd.notnull(i) and i))
#             print(idx, result)
            s[idx] = result
        yield col_name, s

df3 = pd.DataFrame.from_items(get_unique_items_rolling(df2, period))

            Alpha   Beta
2017-03-31  {A, B}  {A, D, C}
2017-04-30  {A, B}  {C}
2017-05-31  {B}     {B, C}

df3.stack().apply(len)

Date        Name 
2017-03-31  Alpha    2
            Beta     3
2017-04-30  Alpha    2
            Beta     1
2017-05-31  Alpha    1
            Beta     2
dtype: int64
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 pandas 数据框中进行 groupby 后滚动前 3 个月的唯一计数 的相关文章

  • 在 pandas 的单独列中分配 2 次幂的存储桶范围

    我有一列值 如下所示 col 12 76 34 我需要为此生成一个带有存储桶标签的新列col1如下所述 col1 bucket labels 12 8 16 76 64 128 34 32 64 这里 列中的值可能会有所不同 结果的数量也会
  • 如何在 Pandas 中用多个唯一字符串替换重复值?

    import pandas as pd import numpy as np data Name Tom Tom Jack Terry Age 20 21 19 18 df pd DataFrame data 假设我有一个如下所示的数据框
  • Pytorch 线性层现在自动重塑输入?

    我记得过去 nn Linear只接受 2D 张量 但今天我发现nn Linear现在接受 3D 甚至任意维度的张量 X torch randn 20 20 20 20 10 linear layer nn Linear 10 5 outpu
  • 如何在Tensorflow中读取json文件?

    我正在尝试编写一个函数 用于读取张量流中的 json 文件 json 文件具有以下结构 bounding box y 98 5 x 94 0 height 197 width 188 rotation yaw 27 970195770263
  • ibapi nextValidId 并不总是被调用

    我构建了一个小型 ibapi python 应用程序来运行一些策略 同时注意保持与 tws 的连接 如果 tws 处于非活动状态 python 应用程序将启动并等待 并在 tws 启动时连接到 tws 但这是我的问题 nextValidId
  • Keras ImageDataGenerator 验证分割未从打乱的数据集中选择

    如何将图像数据集随机拆分为训练数据集和验证数据集 更具体地说 validation splitKeras 中的论证ImageDataGenerator函数不是随机地将我的图像分割为训练和验证 而是从未洗牌的数据集中分割验证样本 当指定val
  • matplotlib 示例代码不适用于 python 虚拟环境

    我正在尝试在 matplotlib 中显示图像的 x y z 坐标 示例代码 http matplotlib org examples api image zcoord html在全局 python 安装上工作得很好 当我移动光标时 x y
  • 从 FTP 服务器上的 ZIP 存档读取文件,无需下载到本地系统

    我在 FTP 服务器上的目标文件是 ZIP 文件 CSV 位于更远的两个文件夹中 我如何才能使用 BytesIO 让 pandas 读取 csv 而无需下载它 这是我到目前为止所拥有的 ftp FTP FTP SERVER ftp logi
  • python中matlab find函数的替换

    我正在尝试寻找合适的python函数来替代matlabfind在我的脚本和一些谷歌搜索中我看到np where 大多数时候都能解决目的 但在双重条件的情况下 我有不同的输出 有人可以告诉我这种方法有什么问题以及如何继续吗 示例代码和差异如下
  • 如何在Python中生成0-1矩阵的所有可能组合?

    如何生成大小为 K N 的 0 1 矩阵的所有可能组合 例如 如果我取 K 2 和 N 2 我会得到以下组合 combination 1 0 0 0 0 combination 2 1 0 0 0 combination 3 0 1 0 0
  • 由 asyncio.new_event_loop 创建的事件循环挂起

    以下代码只是挂起而不打印任何内容 import asyncio async def foo loop print foo loop stop loop asyncio new event loop asyncio ensure future
  • Python Selenium 将内容添加到 pandas 数据帧

    我正在尝试循环list用于抓取内容的邮政编码this url http kadastralekaart com 但我面临着错误 例如TimeoutException and StaleElementReferenceException 我该
  • 是否可以通过 Python 使用 Cocoa API?

    我想知道是否可以将 Cocoa Apple 的 API 与 Python 一起使用 以便能够运行像这样的任何代码link https developer apple com documentation appkit nsworkspace
  • 使用 Python for PyQt WebEngine 授予对 Cam & Mic 的访问权限

    我正在构建一个从 Python 调用的简单 Web 应用程序 我正在使用下面的代码 加载此页面时 以编程方式授予对摄像头和麦克风的访问权限的最简单方法是什么 我只在网上找到了 C 示例 无法找到在 Python 代码中执行此操作的方法 fr
  • 如何在 python setup.py 中 chmod 文件?

    我使用 setup py 创建了一个 python 包安装 我希望它复制文件夹 为临时创建的 did 中的数据文件 问题是我必须使用 sudo 权限调用 setup py 因为它写入 usr local 因此 当我的数据文件复制到 did
  • 如何在(最好是纯)Python 中解码 QR 码图像?

    TL DR 我需要一种使用 最好是纯 Python 从图像文件中解码 QR 码的方法 我有一个带有 QR 码的 jpg 文件 我想使用 Python 对其进行解码 我发现有几个库声称可以做到这一点 PyQRCode 网站在这里 http p
  • 在 QThread.exit() 上立即停止处理事件队列

    我正在构建一个 Qt GUI 应用程序 它使用 QThread QObject 组合充当在主线程之外执行操作的工作人员 Via moveToThread QObject 被移动到 QThread 中 这样 我的工作线程就可以拥有在事件循环
  • shutdown.copystat() 在 Azure 上的 Docker 内部失败

    失败的代码在基于以下内容的 Docker 容器内运行python 3 6 stretch德班 当 Django 将文件从一个 Docker 卷移动到另一个 Docker 卷时 就会发生这种情况 当我在 MacOS 10 上测试时 它工作正常
  • Python:正则表达式 findall

    我使用 python 正则表达式从给定字符串中提取某些值 这是我的字符串 mystring txt sometext somemore text here some other text course course1 Id Name mar
  • python chaco轴标签时间格式

    在 Enthought 的 Chaco 中 TimeFormatter类用于格式化刻度的时间字符串 标签 有没有办法指定时间格式 类似于time strftime 源代码现在将显示月份和日期时的格式硬编码为美国风格 MMDD 我想添加一些灵

随机推荐

  • 取消 flatMap 可观察调用链

    我正在使用 Angular 5 和 rxjs 我正在拨打 2 次服务电话 其中一次取决于其他结果 我正在使用 flatMap 进行此操作 我还使用 takeUntil 以便我可以在任何给定点中止操作 我的代码如下所示 this myserv
  • 使用 clang-format 删除尾随空格

    正如标题所示 我试图使用 clang format 来删除文件的尾随空格 但我找不到相关的选项名称 有人能指出我显而易见的事情吗 clang format 会自动删除尾随空格 您可以通过例如测试这一点clang format style G
  • 支持 Hexagon Maps for .NET 的开源 2D 游戏引擎

    我找不到 2D 游戏引擎来为 net 创建六边形地图 我能找到的最好的是 Xconq http sourceforge net projects xconq http sourceforge net projects xconq 和pyga
  • “django.core.exceptions.ValidationError”错误

    我正在 Django 中编写一个简单的游戏 所有的事情都是正确的 但是突然 我遇到了以下错误 Django v 1 7 Python v 3 4 我不知道这些代码有什么问题 test alireza alireza test test1 p
  • 关于并发修改异常[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 您能否告诉我 是否有任何方法可以在单
  • 由于 Google Analytics,PageSpeed Insights 99/100 - 如何缓存 GA?

    我正在努力使 PageSpeed 达到 100 100 而且我已经快到了 我正在尝试找到一个好的解决方案来缓存 Google Analytics 这是我收到的消息 利用浏览器缓存 在静态资源的 HTTP 标头中设置到期日期或最长期限会指示浏
  • 信标已注册,但响应表明 UID 错误

    我使用成功注册了一个信标谷歌邻近API https developers google com beacons proximity guides hl en但响应指示不同的 UID 请求网址https proximitybeacon goo
  • “foreach”并行循环返回 s

    我正在尝试并行处理多个列表项 我的目标是 根据每列的值运行一些标签函数 然后返回带有节点名称 列名称和处理后的标签的数据帧 使用普通的 for 循环 工作流程可以正常工作 但是 当我尝试在 foreach 循环中执行相同的操作时 返回的结果
  • 对于 Haskell 的 QuickCheck,什么是收缩?

    我正在学习 QuickCheck gt 2 6 的诀窍 但我不明白什么是心理医生 从看类型签名 http hackage haskell org packages archive QuickCheck 2 6 doc html Test Q
  • 如何在java中将方法调用作为后台进程

    在我的应用程序中 当用户登录时 我有这个逻辑 它将调用以下方法 并使用用户拥有的所有符号 public void sendSymbol String commaDelimitedSymbols try further logic catch
  • 将 Seq 与 Range 进行模式匹配

    考虑一段代码 def foo xs Seq Int xs match case Nil gt empty list case head Nil gt one element list case head tail gt s head is
  • 点 -> 像素 iText (im)精度

    好的 这是一些代码 pdfDocument is a com itextpdf text Document PdfPTable table new PdfPTable 1 PdfPCell cell new PdfPCell cell se
  • 库存推文、文本挖掘、表情符号错误

    我希望您能够协助进行文本挖掘练习 我对 AAPL 推文感兴趣 并且能够从 API 中提取 500 条推文 我自己克服了几个障碍 但最后一部分需要帮助 由于某种原因 tm 包没有删除停用词 您能看一下可能是什么问题吗 表情符号会引起问题吗 绘
  • 在 FragmentStatePagerAdapter 中保存状态和恢复状态

    我正在使用ViewPager with FragmentStatePageAdapter我的屏幕上有 5 个页面 其中有大量图像和视图 目前我有mViewPager setOffscreenPageLimit 1 所以只有当前 上一个和下一
  • 如何准备图像分类的训练数据

    我是机器学习新手 在图像分类方面遇到一些问题 使用简单的分类器技术 K 最近邻居 我试图区分猫和狗 到目前为止我的代码 import pandas as pd import numpy as np import seaborn as sns
  • alloc 和 init 他们实际做了什么

    有人可以向我解释一下 init 和 alloc 在 Obj C 中的作用吗 我正在阅读这本 obj c 书 其中给出了创建对象的示例 但它并没有真正详细介绍它的作用 alloc返回什么 init 返回什么 Animal k Animal a
  • Windows 卷曲批处理文件

    我想使用 Windows 批处理文件进行 mailgun 卷曲调用 由于Windows shell不支持多行 如何在Windows批处理文件中执行以下curl函数 curl s user api key xxxxxxxxxx https a
  • pandas 中任意列表的笛卡尔积[重复]

    这个问题在这里已经有答案了 给定任意数量的列表 我想生成一个 pandasDataFrame作为笛卡尔积 例如 给定 a 1 2 3 b val1 val2 c 100 101 我想最终得到一个DataFrame有柱子a b and c 以
  • & 运算符在函数指针赋值中可选

    在下面的代码中 mylog c include
  • 在 pandas 数据框中进行 groupby 后滚动前 3 个月的唯一计数

    以下是数据框 Date Name data 01 01 2017 Alpha A 02 01 2017 Alpha A 03 01 2017 Alpha B 01 01 2017 Beta A 01 20 2017 Beta D 03 01