创建一个 Pandas 数据框,其中包含跨越某个日期范围的项目计数

2023-12-04

我有一个 DF,有两个感兴趣的日期,看起来有点像:

LIST_DATE     END_DATE
2000-04-18    2000-05-17 00:00:00
2000-05-18    2000-09-18 00:00:00
2000-04-18    2001-06-07 00:00:00

我按月创建了一个期间索引表“montot”,目前只有月份和年份索引

<class 'pandas.tseries.period.PeriodIndex'>
freq: M
[1999-01, ..., 2013-07]

我想要做的是,对于第二个表“montot”中的每个月,计算第一个表中属于该时间段内的项目(恰好是按月活跃的列表),并将该字段添加到表中...所以例如,第一个表中的第一项将在第 4 个月计数为 1,在第 5 个月计数一次,而第二个项目将在第 5 个月到第 9 个月计数一次,依此类推。每月总计记录在新表/字段中。 所以我要订一张桌子

Month    active
1/1999     5
2/1999     8

等等..不知道如何用 Pandas/Python 来处理它...


首先,这是一种方法value_counts the periods在每个日期列中(使用to_period时间戳方法):

In [11]: p = pd.PeriodIndex(freq='m', start='2000-1', periods=18)

In [12]: starts = df['LIST_DATE'].apply(lambda t: t.to_period(freq='m')).value_counts()

In [13]: ends = df['END_DATE'].apply(lambda t: t.to_period(freq='m')).value_counts()

通过PeriodIndex重新索引它们,填写NaN(以便您可以减去)并从累积结束处获取累积开始,以给出当前活动的:

In [14]: starts.reindex(p).fillna(0).cumsum() - ends.reindex(p).fillna(0).cumsum()
Out[14]: 
2000-01    0
2000-02    0
2000-03    0
2000-04    2
2000-05    2
2000-06    2
2000-07    2
2000-08    2
2000-09    1
2000-10    1
2000-11    1
2000-12    1
2001-01    1
2001-02    1
2001-03    1
2001-04    1
2001-05    1
2001-06    0
Freq: M, dtype: float64

另一种最后步骤是创建一个 DataFrame(它最初跟踪更改,因此开始为正,结束为负):

In [21]: current = pd.DataFrame({'starts': starts, 'ends': -ends}, p)

In [22]: current
Out[22]:
         ends  starts
2000-01   NaN     NaN
2000-02   NaN     NaN
2000-03   NaN     NaN
2000-04   NaN       2
2000-05    -1       1
2000-06   NaN     NaN
2000-07   NaN     NaN
2000-08   NaN     NaN
2000-09    -1     NaN
2000-10   NaN     NaN
2000-11   NaN     NaN
2000-12   NaN     NaN
2001-01   NaN     NaN
2001-02   NaN     NaN
2001-03   NaN     NaN
2001-04   NaN     NaN
2001-05   NaN     NaN
2001-06    -1     NaN

In [23]: current.fillna(0)
Out[23]:
         ends  starts
2000-01     0       0
2000-02     0       0
2000-03     0       0
2000-04     0       2
2000-05    -1       1
2000-06     0       0
2000-07     0       0
2000-08     0       0
2000-09    -1       0
2000-10     0       0
2000-11     0       0
2000-12     0       0
2001-01     0       0
2001-02     0       0
2001-03     0       0
2001-04     0       0
2001-05     0       0
2001-06    -1       0 

cumsum 跟踪到该点的开始和结束的运行总计:

In [24]: current.fillna(0).cumsum()
Out[24]:
         ends  starts
2000-01     0       0
2000-02     0       0
2000-03     0       0
2000-04     0       2
2000-05    -1       3
2000-06    -1       3
2000-07    -1       3
2000-08    -1       3
2000-09    -2       3
2000-10    -2       3
2000-11    -2       3
2000-12    -2       3
2001-01    -2       3
2001-02    -2       3
2001-03    -2       3
2001-04    -2       3
2001-05    -2       3
2001-06    -3       3 

将这些列相加,得到当前活动的列,结果与上面相同:

In [25]: current.fillna(0).cumsum().sum(1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建一个 Pandas 数据框,其中包含跨越某个日期范围的项目计数 的相关文章

  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 绘制随时间变化的分类数据计数

    我有一个数据框 df 其中有一列包含分类数据 ETH 带有 DateTimeIndex 我想绘制类别counts随着时间的推移 它们按天索引 我最好按年绘制它们 df pd DataFrame County 0 Bexar 3 Nueces
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 识别 pandas 数据框中各组之间的差异

    我有一个按日期和 ID 索引的 pandas 数据框 我想 识别日期之间增删的ID 将 ID 添加到另一个数据帧以及添加 删除的日期 date ID value 12 31 2010 13 0 124409 9 0 555959 1 0 7

随机推荐

  • PHP 文件不写入当前目录?

    我在网络主机上有一个 PHP 文件 如下所示 但文件test txt当我从浏览器执行页面时不会创建 为什么不 是权限问题吗 是的 PHP 文档说 如果文件名不存在 则创建该文件 否则 现有文件将被覆盖 除非设置了 FILE APPEND 标
  • keytool 错误:java.lang.Exception:必须指定 -keyalg

    我正在尝试创建密钥对 并从 Windows 命令行提示符 使用 Windows 10 JDK 14 将它们存储在密钥存储中 这是我正在输入的命令 keytool genkey alias chris keystore chirskeysto
  • 异步/等待与线程

    在 Net 4 5 中 微软添加了新的Async Await简化异步编码的功能 然而 我想知道 Can Async Await完全取代旧的使用方式Threads Is Async Await有能力做任何事Thread可以做 异步 Can A
  • CakePHP - 创建一个编辑同一模型的多行的表单

    我正在尝试构建一个由属于主题组的主题组成的表单 从视觉上看 主题显示在页面上每个主题组标题下 您将能够编辑主题组或单个主题的名称 如果我给你一个 HTML 的例子 div class heading div
  • 找不到元素“赋值”的声明

    所以我从 XML 和模式开始 今天我遇到了这个 但我还没能弄清楚 我收到错误消息 Ln 5 Col 2 找不到 元素 赋值 的声明 我相信我已经声明了该元素 但也许我遗漏了一些东西并且没有声明 这是我的 XML 文件
  • 如何正确使用线性渐变?

    我对 CSS3 还很陌生 我的项目的 CSS 文件中有以下样式 headerDiv background image linear gradient 04519b 044687 60 033769 我很清楚什么linear gradient
  • Watson 检索和排名 - 手动排名

    我正在尝试建立一个排名器进行演示 我进行了 自动训练 并且得到了不错的结果 可能会更好 我正在尝试进行手动训练 但我对 Bluemix 在线文档中参数的含义感到困惑 https www ibm com watson developerclo
  • PayPal 沙盒错误:Cookie 被阻止

    我正在使用贝宝沙箱帐户 一切正常 但是 现在它显示以下错误 cookie 已启用 我尝试使用不同的浏览器和不同的计算机 我仍然遇到同样的错误 我尝试清除cookies和缓存 但这没有用 有什么解决办法吗 请开启cookies以结帐 这是 P
  • Rails 4 模型始终返回 nil

    我对以下错误感到疯狂 我有一个 User 类 它的两个属性 生日和created at gt datetime 总是返回nil 除了它在数据库上有一个值 我正在使用设备来管理身份验证 这是数据库表 CREATE TABLE users id
  • 使用容器中的第 n 个元素,但使用另一个键

    我有两个向量 一种实际保存数据 假设是浮动 另一种保存索引 我想通过nth element索引向量 但我希望通过实际保存数据的向量来完成比较 我正在考虑一个函子 但我猜这仅提供了 运算符 我通过将数据向量设为全局向量来实现这一目标 但这当然
  • 如何使用Reactor(Spring WebClient)进行重复调用?

    我使用 Reactor Spring5 WebClient 作为我的反应式编程 API 我有 2 个 REST 端点要调用 第一个结果将作为第二个结果的参数 对于第二个 API 它将返回带有 hasMore 值的结果 如果这个值是true
  • 为什么H1标签不需要CSS中的类或id?

    我只是查看我的 CSS h1 标签的定义如下 h1 当其他所有内容都有 id 或 时它前面的类 标题标签不需要这个的原因是什么 我是否真的犯了一个错误 而他们确实需要一个错误 这意味着所有发生的情况 of h1会分享相同的风格 同样 您可以
  • 与机器相关的 _write 失败,并显示 EINVAL 错误代码

    在实际问题之前 这有一些冗长的背景 但是 它需要一些解释 以期消除一些转移注意力的内容 我们的应用程序是用 Microsoft Visual C 2005 开发的 使用第 3 方库 我们幸运地拥有其源代码 来导出另一个第 3 方应用程序中使
  • Mongo 和 find 始终限制为 100 个地理数据

    在尝试尝试 mongo 性能时 我发现 mongodb 的行为很奇怪 首先我用以下查询填充它 for i 0 i lt 10000000 i db location insert id Math floor Math random 1000
  • Android xxhdpi、420 ​​dpi 和 480 dpi

    我面临下一个问题 我有一个values xxhdpi 及其dimensions xml 480 dpi 的设备非常适合此文件夹 问题是 例如三星 Galaxy S4 或 S5 会从该文件夹中捕获值 但在屏幕上看起来不太好 因为它们的分辨率为
  • JavaScript 专家请注意:需要 setInterval() 方面的帮助

    我正在尝试为房地产商店橱窗制作非交互式展示 我已经有一段时间没玩了setInterval 我的脚本第一次执行时 一切都很好 但是当它尝试通过以下方式获取下一个属性时getNextProperty 它开始变得混乱 如果您有 Firebug 或
  • 从OutputStream创建InputStream的最有效方法

    这一页 http blog ostermiller org convert java outputstream inputstream描述如何从OutputStream创建InputStream new ByteArrayInputStre
  • 如何在 android pie(9) 设备中获取当前的 wifi 连接名称?

    我知道这对你来说很简单 在这里 我只是尝试在 Android Pie 设备中获取 WiFi 名称 借助下面的代码行 我可以获取 Nogout 设备的 WiFi 名称 String ssid wifiInfo getSSID 我已经尝试了很多
  • 如何根据创建日期以外的其他时间对 Sitecore 项目进行存储?

    我将 Sitecore 与 DMS Sitecore 7 2 结合使用 并在布局上设置各种控件 以根据用户个人资料卡从不同文件夹中提取内容 我希望这些文件夹成为 桶 文件夹 因为每个个人资料卡都有一个文件夹 对于作者来说 每次新的个人资料卡
  • 创建一个 Pandas 数据框,其中包含跨越某个日期范围的项目计数

    我有一个 DF 有两个感兴趣的日期 看起来有点像 LIST DATE END DATE 2000 04 18 2000 05 17 00 00 00 2000 05 18 2000 09 18 00 00 00 2000 04 18 200