将计算列添加到 pandas 中的数据框

2023-12-01

我有一个 OHLC 价格数据集,我已将其从 CSV 解析为 Pandas 数据框,并重新采样为 15 分钟柱:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 500047 entries, 1998-05-04 04:45:00 to 2012-08-07 00:15:00
Freq: 15T
Data columns:
Close    363152  non-null values
High     363152  non-null values
Low      363152  non-null values
Open     363152  non-null values
dtypes: float64(4)

我想添加各种计算列,从简单的列开始,例如周期范围 (H-L),然后是布尔值以指示我将定义的价格模式的出现 - 例如锤子蜡烛形态,其示例定义:

def closed_in_top_half_of_range(h,l,c):
    return c > l + (h-l)/2

def lower_wick(o,l,c):
    return min(o,c)-l

def real_body(o,c):
    return abs(c-o)

def lower_wick_at_least_twice_real_body(o,l,c):
    return lower_wick(o,l,c) >= 2 * real_body(o,c)

def is_hammer(row):
    return lower_wick_at_least_twice_real_body(row["Open"],row["Low"],row["Close"]) \
    and closed_in_top_half_of_range(row["High"],row["Low"],row["Close"])

基本问题:如何将函数映射到列,特别是我想引用多个其他列或整行或其他内容的地方?

这个帖子处理从单个源列添加两个计算列,这很接近,但不完全一样。

稍微高级一点:对于参考多个柱 (T) 确定的价格模式,如何从函数定义中引用不同的行(例如 T-1、T-2 等)?


对于您想要执行的每一列,确切的代码都会有所不同,但您可能会想要使用map and apply功能。在某些情况下,您可以直接使用现有列进行计算,因为这些列是 Pandas Series 对象,它们也可以用作 Numpy 数组,自动按元素进行通常的数学运算。

>>> d
    A   B  C
0  11  13  5
1   6   7  4
2   8   3  6
3   4   8  7
4   0   1  7
>>> (d.A + d.B) / d.C
0    4.800000
1    3.250000
2    1.833333
3    1.714286
4    0.142857
>>> d.A > d.C
0     True
1     True
2     True
3    False
4    False

如果需要在一行中使用 max 和 min 等运算,可以使用apply with axis=1将您喜欢的任何函数应用于每一行。这是一个计算示例min(A, B)-C,这似乎就像你的“下芯”:

>>> d.apply(lambda row: min([row['A'], row['B']])-row['C'], axis=1)
0    6
1    2
2   -3
3   -3
4   -7

希望这能让您了解如何继续。

编辑:要将行与相邻行进行比较,最简单的方法是对要比较的列进行切片,保留开头/结尾,然后比较结果切片。例如,这将告诉您 A 列中的元素小于 C 列中下一行的元素:

d['A'][:-1] < d['C'][1:]

这以另一种方式进行,告诉您哪些行的 A 小于前一行的 C:

d['A'][1:] < d['C'][:-1]

Doing ['A"][:-1]切掉 A 列的最后一个元素,然后执行['C'][1:]切掉 C 列的第一个元素,因此当您将这两个元素排列起来并进行比较时,您将 A 中的每个元素与下一行中的 C 进行比较。

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

将计算列添加到 pandas 中的数据框 的相关文章

随机推荐

  • 将每个字符包裹在一个范围内

    我试图将每个数字包裹在一个范围内 这就是我现在所在的地方 div class numbers 12345 div div class numbers 12345 div div class numbers 12345 div numbers
  • 将数据从小部件发送到活动

    我正在尝试将数据从我的小部件发送到我的活动 我已经看到了几个关于小部件方面的主题 但我没有成功地在我的活动中获取数据 See 将数据从小部件传递到应用程序 在我的 Activity 中 我尝试在 onStart 方法中执行以下操作 Inte
  • MySQL 中各种日期/时间字段类型的优缺点是什么?

    MySQL 中的日期和时间可以存储为 DATETIME TIMESTAMP 和 INTEGER 自 1970 年 1 月 1 日以来的秒数 各自的优点和缺点是什么 特别是在 LAMP 堆栈下开发时 TIMESTAMP 存储在 MySQL 专
  • WSO2 ESB日志太大,如何设置?

    I do a performance test on WSO2 ESB And I found the log is too big that can not open The biggest file is 7 20GB I think
  • 如何让Python中的for循环工作?

    我想吐出一个回文列表 直到我给出某个字母为止 是关于这一部分的 def pyramid palindrome last letter for letter in range 97 last letter last letter last l
  • 使用 CUDA 进行 Cholesky 分解

    我正在尝试使用 cuSOLVER 库实现 Cholesky 分解 我是一名初学者 CUDA 程序员 我总是指定块大小和网格大小 但我无法找出程序员如何使用 cuSOLVER 函数显式设置它 这是文档 http docs nvidia com
  • 使用 powershell 处理弹出框

    谁能告诉我如何使用 powershell 在弹出窗口上单击 确定 或 取消 我正在尝试使用 powershell 自动化网站 但我是 powershell 新手 我必须单击弹出框中的 确定 按钮才能继续 我了解 VBscript 因为我可以
  • 如何在没有安全警告的情况下发布Java Web Start jnlp应用程序?

    我有一个从网站上的 jnlp 文件启动的 Java 应用程序 我试图让它运行 而不会在运行之前弹出一堆安全警告 该程序被分解为大约 10 个不同的 jar 文件 大约 30 个 jar 库以及一些也包含在 jar 文件中的本机库 我已经使用
  • HttpClient 调用 Windows 身份验证 Api 控制器方法...但没有 WindowsIdentity 随之而来

    当 api 控制器使用 windows authentication 时 有没有办法让我的 api 控制器获取发起对 api 控制器调用的帐户的身份 我的 castController User Identity 是 类型 WindowsI
  • DOM 对象存在后初始化 angular2 组件中的传单地图

    我目前正在尝试在有角度的材质内创建传单地图2tab group如下 import Component NgModule from angular core import BrowserModule from angular platform
  • 在 python 中使用迭代器?

    我刚刚了解了 Python 中的迭代器 但是我很难实现它们 我正在尝试编写一个类以使该循环起作用 odds OddNumbers 13 for i in odds print i 我想编写一个 iter 函数和 next 函数来执行此操作
  • 如何使用自动布局将 UILabel 设置为 UICell 宽度的百分比

    I m wondering how to set a UILabel s width expressed as a of the Cell s total width I m using AutoLayout Normally I woul
  • AxiosError:getaddrinfo ENOTFOUND

    我是新手 正在学习使用 API 我在使用 axios 时收到 POST 请求错误 In docs我想要交互的API 他们给出了curl的例子 curl X POST https ssuploader streamsb com upload
  • Android:更改设备设置时布局尺寸问题

    我目前面临着尺寸变化的麻烦 我已经使用 dp 对 xml 文件进行了编码 但是当我更改设备屏幕尺寸时 布局会发生变化 例如 当我进入 设置 显示 屏幕缩放和字体 并将屏幕缩放从中到大时 布局中的某些元素 例如图像视图或按钮 会增大并超出屏幕
  • Geopy 太慢 - 一直超时

    我正在使用 geopy 获取城市名称的纬度 经度对 对于单个查询 这工作得很好 我现在尝试做的是迭代 城市名称的大列表 46 000 并获取每个城市的地理编码 然后 我通过一个检查循环运行它们 将城市 如果在美国 排序为正确的状态 我的问题
  • Powershell 来分割大型 csv。需要很长时间。希望通过代码审查来缩短流程

    csv 大约是一个演出 有超过 100 万行 我正在尝试将其分成 5 个 前 4 个大约需要 18 小时 第 5 个永远不会发生 或者我没有足够的耐心 我的电脑将处于睡眠模式 因为它不会解锁 function Split Csv Cmdle
  • 如果我使用 Javascript 和 CSS 动态获取数据库的文本,如何将文本划分为列?

    我认为一个脚本使得每个容器中一定数量的字符都可以工作 你知道这样的脚本吗 这是一种响应式设计 我可以使用多个 css 文件 但我只需要一个 html 文件 问题出在我将动态获取的文本中 所以我不知道我会得到多少个字符 在桌面大小中 段落排列
  • fgets() 没有像我期望的那样工作

    谁能告诉我为什么这段代码不起作用 当我运行时 它只是打印出 输入有关线索 1 的信息 并且没有任何输入 跳到另一个步骤 include
  • Windows 物理驱动器访问 fopen 和 fseek

    我目前正在尝试以 C 语言中的二进制数据流的形式访问物理硬盘 我已经安装了一个映像 img 并且可以从操作系统 Win 7 中读取它 我的 C 程序只是尝试以只读二进制模式打开物理驱动器 然后从驱动器读取一些数据 但是 如果我只是从流中读取
  • 将计算列添加到 pandas 中的数据框

    我有一个 OHLC 价格数据集 我已将其从 CSV 解析为 Pandas 数据框 并重新采样为 15 分钟柱