量化工作中经常遇到的一个问题:有每一天以每分钟为颗粒度的交易数据,但是每天的9:30没有数据,需要每一天添加一个9:30的数据,开盘和收盘价格等于9:31的数据。

因为数据量非常大,人工每天手动添加不仅耗时耗力,而且容易出错。本文记录下使用Excel和Python处理实际工作中这类问题的方法。

Excel处理

Excel处理思路:首先要保证每一天开始时添加一个空白行,然后空白行数据等于下一行数据内容。

  • 使用IF函数和FIND函数等将9:31的数据一行标记为1,=IF(ISERROR(FIND("09:31:00",A3)),"",1)
  • 公式无法直接查找,将biaoji这一列复制为值
  • 选中biaoji列,查找和选择中有"定位条件"(快捷键Ctrl+G),选择常量选中这一列标记为1的行
  • 选中了标记1的所有行,鼠标右击插入整行
  • 数值填充列(close,open列)一样逻辑:选中整列,Ctrl+G定位空值,输入公式=C3(下一行),Ctrl+Enter全部填充
  • 时间time列进行处理

示例:
上证50分钟涨跌幅数据

Python处理

import pandas as pddf = pd.read_excel('上证50分钟涨跌幅数据.xlsx')df['date'] = pd.to_datetime(df['time'],format='%Y-%m-%d')
from datetime import datetime
df['date_'] = df['time'].apply(lambda x:datetime.strptime(x[:10],'%Y-%m-%d'))
#dataframe分组并在每一组第一行前创建新行,其他字段数值填充为第一行数值,日期减少一分钟
def augment_group(group):first_row = group.iloc[[0]]first_row['date'] -= pd.Timedelta(minutes=1) return first_row.append(group)#df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
(df.groupby('date_', as_index=False, group_keys=False).apply(augment_group).reset_index(drop=True))

分组每一组数据最开始添加一行,内容与每组第二行一致相关推荐

  1. python解决数据框中添加一行或者一列(DataFrame的行列处理)

    1.解决数据框中添加一行(给定值) ###原数据框data_Peak_2 = pd.DataFrame({"Peak_density": np.ndarray.tolist(hma ...

  2. shell - 在文本中的前一行或后一行添加一行内容,指定行前后增加一行内容

    linux的sed工具是十分强大的,能很容易的实现在某关键词的前一行或后一行增加内容.今天在批量修改tomcat的日志时就用到了该功能. 一.在某行的前一行或后一行添加内容 具休操作如下: #匹配行前 ...

  3. R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_circle函数在数据簇或数据分组的数据点周围添加圆圈进行注释(自定义圆圈的大小)

    R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_circle函数在数据簇或数据分组的数据点周围添加圆圈进行注释(自定义圆圈的大小) 目录

  4. R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_ellipse函数在数据簇或数据分组的数据点周围添加椭圆(ellipse)进行注释(对椭圆包围的区域进行着色为阴影区域)

    R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_ellipse函数在数据簇或数据分组的数据点周围添加椭圆(ellipse)进行注释(对椭圆包围的区域进行着色为阴影区域) ...

  5. pandas为dataframe添加新的数据行(rows)、在dataframe后面纵向添加一行数据(数据为列表list形式)、列有不匹配将会使用NA值进行填补

    pandas为dataframe添加新的数据行(rows).在dataframe后面纵向添加一行数据(数据为列表list形式).列有不匹配将会使用NA值进行填补 目录

  6. DataGridView添加一行数据、全选、取消全选、清空数据、删除选中行

    .net 2005下的Windows Form Application,一个DataGridView控件和4个Button,界面设置如下: 代码如下,有注解,相信大家都看得明白: using Syst ...

  7. jsp 动态添加一行数据_大数据从入门到深入:JavaEE 之 动态网页开发基础 JSP的数据交互(3)...

    1.7 JSP实战 1.7.1 需求说明 : 采用model 1模式开发数据库表的增删改查业务 假设 数据库有一张表叫person表,完成person表的页面级别的 查询全部 添加 修改 删除 功能 ...

  8. js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素...

    JS定义了一个json数据var test={name:"name",age:"12"};需要给test再添加一个字段,需要什么办法,可以让test的值为{na ...

  9. 给DataTable中添加一行数据

    给DataTable中添加一行数据 一.如果该DataTable有两列,列的名称是Name,Age,且该DataTable的名称是dt; DataTable dt = new DataTable(); ...

最新文章

  1. 计算机操作系统“进程”与“线程”的通俗解析
  2. 基于重力补偿的 PD 控制
  3. vue 箭头函数兼容性_前端学习计划之VUE学习(二)
  4. 计算机信息安全与病毒6,信息安全与计算机病毒……毕业.docx
  5. 1、EJB基本概念及运行环境
  6. 【转】DICOM之Print!!!!!!!!!
  7. java 学习案例之英汉字典
  8. [Linux 性能检测工具]DF
  9. 数据质量管理的核心要素和技术原则
  10. 【扩频通信】基于matlab直接序列扩频通信【含Matlab源码 1004期】
  11. Dotween Yoyo
  12. matlab插值拟合
  13. 如何实时获取当前时间
  14. 武汉市计算机学校报名条件,自主招生报名条件
  15. 【前端工程化】搭建vue-cli + cesium项目的脚手架及常见问题
  16. 牛客网 - [牛客假日团队赛6]Mud Puddles(BFS)
  17. java 字母金字塔_打印大写字母三角形
  18. Unity PSD导入到Unity
  19. c语言 寻找相同的数字,用c语言编写寻找既是完全平方数,又有两位数字相同的三位正整数,例如121,144等。...
  20. 人月、人年的计算公式

热门文章

  1. 《Unity开发实战》——2.9节显示迷你地图
  2. linux 网络 sk_buff结构
  3. linux批量筛选序列变异位点,还在为微生物重测序变异检测发愁?samtools帮助你!...
  4. coldfusion_ColdFusion中的一周:5月21日至27日:迟到总比不到好
  5. 正点stm32串口中断理解
  6. 90后80后70后60后50后的无奈
  7. xen虚拟windows使用vnc桌面鼠标位置偏移现象的解决
  8. 线上渠道做APP好还是小程序好?
  9. 腾讯通服务器历史文件路径,腾讯通RTX管理器打开时提示找不到数据源,怎么办?...
  10. 腾讯通服务器文件数据源,Rtx/关于SQL数据库配置