在数据框上滚动函数

2023-11-26

我有以下数据框C.

>>> C
              a    b   c
2011-01-01    0    0 NaN
2011-01-02   41   12 NaN
2011-01-03   82   24 NaN
2011-01-04  123   36 NaN
2011-01-05  164   48 NaN
2011-01-06  205   60   2
2011-01-07  246   72   4
2011-01-08  287   84   6
2011-01-09  328   96   8
2011-01-10  369  108  10

我想添加一个新列,d,我在固定窗口(此处为 6)上应用滚动函数,我以某种方式为每一行(或日期),fix价值c。此滚动函数中的一个循环应该是(伪):

              a    b   c   d
2011-01-01    0    0 NaN   a + b*2 (a,b from this row, '2' is from 'c' on 2011-01-06)
2011-01-02   41   12 NaN   a + b*2 (a,b from this row, '2' is still from 2011-01-06)
2011-01-03   82   24 NaN   a + b*2
2011-01-04  123   36 NaN   a + b*2
2011-01-05  164   48 NaN   a + b*2
2011-01-06  205   60   2   a + b*2
2011-01-07  246   72   4   
2011-01-08  287   84   6   
2011-01-09  328   96   8   
2011-01-10  369  108  10

在这个“循环”之后,我想将所有这 6 个计算行放入d并运行函数调用,该函数调用又将返回one值,应该存储在另一列中,e say:

              a    b   c   d                               e

2011-01-01    0    0 NaN   a + b*2 ---|                   NaN
2011-01-02   41   12 NaN   a + b*2    |                   NaN
2011-01-03   82   24 NaN   a + b*2    | These values      NaN
2011-01-04  123   36 NaN   a + b*2    | are input to      NaN
2011-01-05  164   48 NaN   a + b*2    | function          NaN
2011-01-06  205   60   2   a + b*2 ---| yielding          X
2011-01-07  246   72   4                value X in
2011-01-08  287   84   6                column 'e'
2011-01-09  328   96   8   
2011-01-10  369  108  10

然后这个过程将被迭代到next窗口(同样是 6 长),例如:

              a    b   c   d             e
2011-01-01    0    0 NaN   
2011-01-02   41   12 NaN   a + b*4 (a,b from this row, '4' is from 'c' now from 2011-01-07)
2011-01-03   82   24 NaN   a + b*4 (a,b from this row, '4' is still from 2011-01-07)
2011-01-04  123   36 NaN   a + b*4
2011-01-05  164   48 NaN   a + b*4
2011-01-06  205   60   2   a + b*4       X
2011-01-07  246   72   4   a + b*4
2011-01-08  287   84   6   
2011-01-09  328   96   8   
2011-01-10  369  108  10

              a    b   c   d                               e

2011-01-01    0    0 NaN                                  NaN
2011-01-02   41   12 NaN   a + b*4 ---|                   NaN
2011-01-03   82   24 NaN   a + b*4    | These values      NaN
2011-01-04  123   36 NaN   a + b*4    | are input to      NaN
2011-01-05  164   48 NaN   a + b*4    | function          NaN
2011-01-06  205   60   2   a + b*4    | yielding          X
2011-01-07  246   72   4   a + b*4 ---| value Y in        Y
2011-01-08  287   84   6                column 'e'
2011-01-09  328   96   8   
2011-01-10  369  108  10

希望这足够清楚,

谢谢, 氮


你可以使用pd.rolling_apply:

import numpy as np
import pandas as pd
df = pd.read_table('data', sep='\s+')

def foo(x, df):
    window = df.iloc[x]
    # print(window)
    c = df.ix[int(x[-1]), 'c']
    dvals = window['a'] + window['b']*c
    return bar(dvals)

def bar(dvals):
    # print(dvals)
    return dvals.mean()

df['e'] = pd.rolling_apply(np.arange(len(df)), 6, foo, args=(df,))
print(df)

yields

              a    b   c       e
2011-01-01    0    0 NaN     NaN
2011-01-02   41   12 NaN     NaN
2011-01-03   82   24 NaN     NaN
2011-01-04  123   36 NaN     NaN
2011-01-05  164   48 NaN     NaN
2011-01-06  205   60   2   162.5
2011-01-07  246   72   4   311.5
2011-01-08  287   84   6   508.5
2011-01-09  328   96   8   753.5
2011-01-10  369  108  10  1046.5

The args and kwargs参数为添加到rolling_apply在 Pandas 版本 0.14.0 中.

因为在我上面的例子中df是一个全局变量,其实没有必要 将其传递给foo作为一个论点。你可以简单地删除df来自def foo行并省略args=(df,)在通话中rolling_apply.

然而,有时df可能未定义在可访问的范围内foo。在这种情况下,有一个简单的解决方法——创建一个闭包:

def foo(df):
    def inner_foo(x):
        window = df.iloc[x]
        # print(window)
        c = df.ix[int(x[-1]), 'c']
        dvals = window['a'] + window['b']*c
        return bar(dvals)
    return inner_foo

df['e'] = pd.rolling_apply(np.arange(len(df)), 6, foo(df))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在数据框上滚动函数 的相关文章

  • ctypes 错误:libdc1394 错误:无法初始化 libdc1394

    我正在尝试将程序编译为共享库 我可以使用 ctypes 在 Python 代码中使用该库 使用以下命令该库可以正常编译 g shared Wl soname mylib O3 o mylib so fPIC files pkg config
  • Python 是解释型的还是编译型的,或者两者兼而有之?

    据我了解 An 解释的语言是由解释器 将高级语言转换为机器代码然后执行的程序 实时运行和执行的高级语言 它一次处理一点程序 A compiled语言是一种高级语言 其代码首先由编译器 将高级语言转换为机器代码的程序 转换为机器代码 然后由执
  • Python 使用 Gstreamer 访问 USB 麦克风时遇到问题,以便在 Raspberry Pi 上使用 Pocketsphinx 执行语音识别

    所以Python的表现就好像它根本听不到我的麦克风发出的任何声音 问题就在这里 我有一个Python 2 7 假设使用的脚本Gstreamer通过以下方式访问我的麦克风并为我进行语音识别口袋狮身人面像 我在用着脉冲音频我的设备是树莓派 我的
  • PyTorch 给出 cuda 运行时错误

    我对我的代码做了一些小小的修改 以便它不使用 DataParallel and DistributedDataParallel 代码如下 import argparse import os import shutil import time
  • ImportError:运行 jupyter Notebook 时没有名为 IPython.paths 的模块?

    我通过以下方式安装了 jupyter usr local opt python bin python2 7 m pip install jupyter 这将安装 ipython 版本 4 1 2 但是 当我运行 jupyter Notebo
  • 更改 x 轴比例

    我使用 Matlab 创建了这个图 使用 matplotlib x 轴绘制大数字 例如 100000 200000 300000 我想要 1 2 3 和 10 5 之类的值来指示它实际上是 100000 200000 300000 有没有一
  • 使用 Python 计算 Spark 中成对 (K,V) RDD 中每个 KEY 的平均值

    我想与 Python 共享这个特定的 Apache Spark 解决方案 因为它的文档非常贫乏 我想通过 KEY 计算 K V 对 存储在 Pairwise RDD 中 的平均值 示例数据如下所示 gt gt gt rdd1 take 10
  • CNTK 抱怨 LSTM 中的动态轴

    我正在尝试在 CNTK 中实现 LSTM 使用 Python 来对序列进行分类 Input 特征是固定长度的数字序列 时间序列 标签是 one hot 值的向量 Network input input variable input dim
  • 如何在Python中按AaB而不是ABa顺序对字符串进行排序

    我正在尝试对字符串进行排序 为 punnetsquare 制作基因型 我目前的实现是 unsorted genotype ABaB sorted genotype sorted list unsorted genotype sorted s
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • Werkzeug 中的线程和本地代理。用法

    首先 我想确保我正确理解了功能的分配 分配本地代理功能以通过线程内的模块 包 共享变量 对象 我对吗 其次 用法对我来说仍然不清楚 也许是因为我误解了作业 我用烧瓶 如果我有两个 或更多 模块 A B 我想将对象C从模块A导入到模块B 但我
  • 合并数据框而不重复行

    我想合并两个数据框 但如果有多个匹配项 则不想重复行 相反 我想总结一下那天的观察结果 来自 合并 提取两个数据框中与指定列匹配的行并将其连接在一起 如果有多个匹配项 则所有可能的匹配项各贡献一行 这是一些示例代码 days lt as d
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121
  • PIL - 需要抖动,但限制调色板会导致问题

    我是 Python 新手 正在尝试使用 PIL 来执行 Arduino 项目所需的解析任务 这个问题涉及到Image convert 方法以及调色板 抖动等选项 我有一些硬件能够一次仅显示 16 种颜色的图像 但它们可以指定为 RGB 三元
  • 导入错误:无法导入名称“时间戳”

    我使用以下代码在 python 3 6 3 中成功安装了 ggplot conda install c conda forge ggplot 但是当我使用下面的代码将其导入笔记本时 出现错误 from ggplot import Impor
  • Python问题:打开和关闭文件返回语法错误

    大家好 我发现了这个有用的 python 脚本 它允许我从网站获取一些天气数据 我将创建一个文件和其中的数据集 有些东西不起作用 它返回此错误 File
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • 通过 Web 界面执行 python 单元测试

    是否可以通过 Web 界面执行单元测试 如果可以 如何执行 EDIT 现在我想要结果 对于测试 我希望它们是自动化的 可能每次我对代码进行更改时 抱歉我忘了说得更清楚 EDIT 这个答案此时已经过时了 Use Jenkins https j
  • python 日志记录会刷新每个日志吗?

    当我使用标准模块将日志写入文件时logging 每个日志会分别刷新到磁盘吗 例如 下面的代码会将日志刷新 10 次吗 logging basicConfig level logging DEBUG filename debug log fo
  • tkinter:打开一个带有按钮提示的新窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 用户如何按下 tkinter GUI 中的按钮来打开新窗口 我只需要非常简单的解决方案 如果代码也能被解释那就太好了 这

随机推荐

  • Tabula-py - 导入错误:没有名为 tabula 的模块

    我正在尝试使用 Tabula py 来阅读 pdf 我通过安装 tabula pypip install tabula py 我还安装了所需的依赖项 requests pandas pytest flake8 我的代码目前如下 import
  • 如何进行 SPARQL 查询来查找属性的最高值?

    假设我有一个像 age 这样的谓词 其中所有年龄三元组的值都是整数 哪个 SPARQL 查询会返回数据中年龄最高的主题 你只需要做order by desc与年龄谓词然后limit只得到第一个 PREFIX ns
  • 从同一个 FileInputStream 读取字符串和二进制

    我有一个文件 开头包含一些纯文本 结尾包含二进制内容 二进制内容的大小由我读取的某些纯文本行决定 我当时用的是BufferedReader读取各个行 但是它没有公开任何方法来引用读取字节数组 这readUTF for a DataInput
  • Azure DocumentDB 按 ID 查询非常慢

    我有一个 16GB 的集合 有 2 个分区 当我通过 ID 查询文档时 速度非常慢 但是通过索引字段查询速度很快 两者都是跨分区查询 如果我通过查询传递分区键 速度会很快 但分区键并不总是可用于我的查询 在 Azure 门户中使用 NET
  • 如何对使用 jspdf 和 html2canvas 生成的文件进行 Base64 编码?

    我正在尝试对附加代码中生成的文档进行编码 但没有任何反应 不会生成错误 但也不会对文件进行编码 并且ajax request从未被执行过 正确的方法是什么 html2canvas document getElementById workAr
  • 使用“--without-heartbeat”标志运行的芹菜工作人员对应用程序的影响

    讨论here高层讨论了与 celery 工人一起运行的一些影响 without hearbeat without gossip without mingle flags 我想知道是否 without heartbeat标志会影响工作人员检测
  • Python Statsmodels Mixedlm(混合线性模型)随机效应

    我对 Statsmodels Mixedlm 的输出有点困惑 希望有人能解释一下 我有一个大的单户住宅数据集 包括每个房产的前两次销售价格 销售日期 我已经对整个数据集进行了地理编码 并获取了每个属性的海拔 我试图了解不同城市之间海拔与房价
  • Runtime.maxMemory() 和 -Xmx

    我期望 Runtime maxMemory 准确返回 Xmx 但它返回一个较低的值 那么它返回什么呢 Xmx 标志的解释取决于 VM 一些虚拟机 包括 HotSpot 对有效值施加下限 这个选项 CCC 提案不应提及 Xmx 标志 这样 参
  • 在 Windows 版 Safari 中启用调试菜单

    我在 Safari 3 中找到了很多关于此问题的信息 但在版本 4 中情况明显发生了变化 我只是碰巧通过实验偶然发现了答案 因此将其发布在这里供其他人使用 在 Windows 版 Safari 5 1 7 中进行检查 点击右上角Settin
  • 正确设置 3d 图中的轴限制[重复]

    这个问题在这里已经有答案了 我在 matplotlib 中为 3d 图设置限制时遇到问题 我发现无论我如何设置 x y 和 z 轴的限制 3dplots 的绘图例程都会添加额外的缓冲区 from mpl toolkits mplot3d i
  • 在linux上用什么来使python程序可执行

    我刚刚安装了一个linux系统 Kubuntu 想知道是否有一个程序可以使python程序在linux上可执行 只需将其放在脚本的第一行 usr bin env python 使文件可执行 chmod x myfile py 执行与 myf
  • 我是否应该在统一缓冲区或着色器存储缓冲区对象内使用“vec3”?

    The vec3type 是一个非常好的类型 它只占用3个浮点数 而我有只需要3个浮点数的数据 我想在 UBO 和 或 SSBO 的结构中使用一个 layout std140 uniform UBO vec4 data1 vec3 data
  • LDAP授权

    我开始使用 LDAP 为某些现有系统实现授权和身份验证机制 在开发阶段 我面临着一个艰难的设计决策 用户角色应该存储在哪里 如果我使用 RDBMS 看起来会有三个表 user role and 用户角色映射角色和用户 请建议可用的解决方案
  • 有条件地在数组中添加元素(...)

    我的系统将配置数组发送到如下函数 callThatFunction array k1 gt v1 k2 gt v2 kn vn 我想根据某些情况创建一个键值对 我可以在不为数组创建变量的情况下执行此操作 这会破坏其他人创建的干净配置语法 吗
  • 世博会:“此环境中不支持身份验证/操作”

    我开发了一个react native expo 移动应用程序并尝试使用google帐户登录firebase 但出现错误 auth operation not supported in this enviroment 此应用程序运行的环境不支
  • 让源映射与评估的代码一起使用

    我有一个构建脚本 它通过 uglifyjs 运行我的所有代码 执行一系列奇特的缓存操作 并最终运行eval code 在一些 JavaScript 文件上 我正在尝试启动并运行整个过程源地图 但只要我使用 我似乎就无法让它工作eval 如果
  • AVSampleBufferDisplayLayer 如何显示 H.264

    我想分享我几天来学到的知识 没有太多可找到的 我仍然对声音感到困惑 欢迎提出意见和建议 这是我的代码片段 声明一下 property nonatomic retain AVSampleBufferDisplayLayer videoLaye
  • Html5 占位符与 .NET MVC 3 Razor 编辑器用于扩展?

    有没有办法写Html5 占位符使用 Html EditorFor 或者我应该只使用 TextBoxFor 扩展 即 Html TextBoxFor model gt model Title new placeholder Enter tit
  • 在 PowerShell 中对非常大的文本文件进行排序

    我有标准的 Apache 日志文件 大小在 500Mb 到 2GB 之间 我需要对其中的行进行排序 每行以日期 yyyy MM dd hh mm ss 开头 因此无需进行排序处理 我想到的最简单 最明显的事情是 Get Content un
  • 在数据框上滚动函数

    我有以下数据框C gt gt gt C a b c 2011 01 01 0 0 NaN 2011 01 02 41 12 NaN 2011 01 03 82 24 NaN 2011 01 04 123 36 NaN 2011 01 05