python : pandas 中多重索引multiindex与多个标的dataframe

2023-05-16

多个标的dataframe,如何转成多重索引的dataframe.
有点象,有中证500股票的数据,如何把这500只股票,整成一个多重索引的dataframe?

import pandas as pd
df1 = pd.read_csv(r"C:\Users\songroom\Desktop\600019.csv")
df2 = pd.read_csv(r"C:\Users\songroom\Desktop\600036.csv")
print(df1.head())
print(df2.head())

格式输出如下:

Unnamed: 0    open   close     low    high  volume    money  factor  \
0  2010-1-4 9:31  958.39  959.56  958.39  959.95    3615  3465823  39.086   
1  2010-1-4 9:32  959.56  957.61  957.61  959.56    2236  2142921  39.086   
2  2010-1-4 9:33  957.61  954.87  954.87  957.61    1356  1296027  39.086   
3  2010-1-4 9:34  955.26  954.48  954.09  955.65    2085  1990535  39.086   
4  2010-1-4 9:35  954.87  954.09  953.70  954.87    2730  2606687  39.086   

   high_limit  low_limit     avg  pre_close  paused  open_interest  
0      1047.9     857.16  958.78     952.53       0              0  
1      1047.9     857.16  958.39     959.56       0              0  
2      1047.9     857.16  955.65     957.61       0              0  
3      1047.9     857.16  954.48     954.87       0              0  
4      1047.9     857.16  954.87     954.48       0              0  
      Unnamed: 0  open  close   low  high  volume    money  factor  \
0  2010-1-4 9:31  1000   1001  1002  1003    3615  3465823  39.086   
1  2010-1-4 9:32  1000   1001  1002  1003    2236  2142921  39.086   
2  2010-1-4 9:33  1000   1001  1002  1003    1356  1296027  39.086   
3  2010-1-4 9:34  1000   1001  1002  1003    2085  1990535  39.086   
4  2010-1-4 9:35  1000   1001  1002  1003    2730  2606687  39.086   

   high_limit  low_limit     avg  pre_close  paused  open_interest  
0      1047.9     857.16  958.78     952.53       0              0  
1      1047.9     857.16  958.39     959.56       0              0  
2      1047.9     857.16  955.65     957.61       0              0  
3      1047.9     857.16  954.48     954.87       0              0  
4      1047.9     857.16  954.87     954.48       0              0  

稍对数据进行整理一下,为多重索引数据的建立做准备:

codes1 = ["600019.XSHG" for i in range(len(df1))] 
codes2 = ["600036.XSHG" for i in range(len(df1))] 
df1 = df1.rename(columns={"Unnamed: 0":"datetime"})
df2 = df2.rename(columns={"Unnamed: 0":"datetime"})
# df1["code"] = codes1
# df2["code"] = codes2
#print(df1.head())
#print(df2.head())
import numpy as np
arr1 = np.array(df1.iloc[:,1:])
#print(arr1.shape)
arr2 = np.array(df2.iloc[:,1:])

def column_hstack(arrs):
    row,col = arrs[0].shape
    for arr in arrs:
        assert arr.shape == (row,col)
    _arrs = []
    for i in range(col):
        for j in range(len(arrs)):          
            temp = arrs[j][:,i]
            if len(_arrs)!= 0:
                _arrs = np.column_stack((_arrs,temp)) 
            else:
                _arrs = np.array(temp)
            #print(f"{i} {j} _arrs.shape: {_arrs.shape}")
            
    return _arrs

arrs = [arr1,arr2]
data = column_hstack(arrs)
print(data.shape)

这样,我们需要的data就准备好了。另外,行索引上,我们只放datetime,列索引上,我们放codes名称,以及各个字段。

注意:数据的大小和位置要匹配好!否则会后面报错。
需要注意的是,我们想做的格式不是下面的格式(格式1)【格式,数据是随便填充的】

格式1:这个是codes在上面,fields在下面
在这里插入图片描述而是格式2:股价字段fields在上面,codes在下面在这里插入图片描述

下面,我们就按经典的pd.MultiIndex.from_product构建方法来操作:

dates   = df1.datetime
codes   = ["600019.XSHG","600036.XSHG" ]
index   = pd.MultiIndex.from_product([dates],names=['datetime']) # row 
fields  = ["open","close","low","high","volume","money","factor","high_limit","low_limit","avg","pre_close","paused","open_interest"]
columns = pd.MultiIndex.from_product([fields,codes],names=['fields','codes']) # col的索引顺序需要特别注意
df_data = pd.DataFrame(data,index=index,columns=columns)

上面注意:col的索引需要注意,"fields"在前面,表示在上面,"codes"在下面,这个数据要匹配好。

输出:

df_data.close
codes          600019.XSHG  600036.XSHG
datetime                               
2010-1-4 9:31       959.56       1001.0
2010-1-4 9:32       957.61       1001.0
2010-1-4 9:33       954.87       1001.0
2010-1-4 9:34       954.48       1001.0
2010-1-4 9:35       954.09       1001.0
2010-1-4 9:36       955.65       1001.0
2010-1-4 9:37       958.00       1001.0
2010-1-4 9:38       955.65       1001.0
2010-1-4 9:39       953.70       1001.0
2010-1-4 9:40       953.70       1001.0

经验证,数据是对的。

[df1.close,df2.close]
[0    959.56
 1    957.61
 2    954.87
 3    954.48
 4    954.09
 5    955.65
 6    958.00
 7    955.65
 8    953.70
 9    953.70
 Name: close, dtype: float64, 0    1001
 1    1001
 2    1001
 3    1001
 4    1001
 5    1001
 6    1001
 7    1001
 8    1001
 9    1001
 Name: close, dtype: int64]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python : pandas 中多重索引multiindex与多个标的dataframe 的相关文章

  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • Shiny:动态数据框构建; renderUI、观察、reactiveValues

    我认为如何使用 Shiny 的 renderUI 功能动态子集数据的问题经常出现 但我很难理解何时使用 renderUI 带有 uiOutput 而不是其他功能 包括观察 反应 反应值甚至条件面板 我想构建一个完全交互式的数据框架 其中每个
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • nginx 基本配置

    一篇比较好的参考文 https www digitalocean com community tutorials how to install nginx on ubuntu 18 04 1 在 Ubuntu 上安装 Nginx sudo
  • 解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug

    在说这个问题之前 必须先解释一下 我们在引入工程的时候 xcode会给我们3个选项 1 Copy items if needed 主要是说明 xff0c 是否要将文件拷贝到工程所在目录 如果不选中 xff0c 而且该库文件不在工程目录下 x
  • GitLab+Jenkins集群+docker CICD集成

    前言 最近部门进行CICD架构升级将引入k8s编排docker容器 借此机会梳理下目前应用部署发布方式 当前架构是我刚到公司时基于gitlab 43 jenkins 43 docker 43 nexus搭建 引入K8S后将调整pod yam
  • 10个轻松上手制作的Arduino项目

    创建Arduino项目可以给您带来很大的满足感 xff0c 但很多时候初学者不知道从哪里开始 启动创建项目时需要考虑很多事情 xff0c 如果您没有制作的经验 xff0c 那可能会令人困惑 正是因为这个原因 xff0c 我们为初学者收集到1
  • 7个基于Arduino的神奇项目!

    创客人数的规模正在增加 xff0c 从当地的超市到大城市繁忙的办公室 xff0c 到处都可以找到他们 xff0c 这些地方可能会有一个或两个创客 xff0c 或许更多 xff0c 在制定他们的下一个设计 xff0c 或者可能渴望找到一个前现
  • 用if语句如何检测一个变量是否存在。

    例如我们用if语句检测一下num这个变量是否存在 若我们直接写 xff1a var night 61 34 34 if num night 61 34 yes 34 console log night 注意 xff01 xff01 1 如果
  • nodejs中的__filename和__dirname的使用说明

    在node js开发中 xff0c 有时候需要获取一些环境变量 xff0c 其中 filename和 dirname 是两个有用的环境变量 dirname 获取的是调用 dirname的脚本文件本身的绝对路径 xff0c 不是启动脚本文件的
  • LPC1768 -- RTC实时时钟

    RTC是当下设备中比较普遍的一个部件 xff0c 很多设备都需要查看时间 RTC实时时钟已经在很多的单片机中集成 xff0c 以前还要专门的时钟芯片 xff0c 现在Cortex M3内核都包括了这个部件了 和以前NXP的ARM7内核不同的
  • Ubuntu Apache2配置SSL证书

    一 Ubuntu下的Apache2 1 安装Apache2 sudo apt get install apache2 默认站点在 var www 配置文件在 etc apache2 日志在 var log apache 启动脚本是 etc
  • 时间机器

    让我们回到过去的是回忆 让我们勇敢前行的是期望 致我最爱的电影 时间机器
  • pyqt5 Qthread事件 进度条 案例

    pyqt5 Qthread事件 进度条 案例 代码 xff1a from PyQt5 import QtWidgets span class token punctuation span QtCore import sys from PyQ
  • CString 的成员函数详解

    CString 的成员函数详解 CSTRING的成员函数详解 typedef ATL CStringT lt TCHAR StrTraitMFC DLL lt TCHAR gt gt CString CString的构造函数 xff1a 1
  • Rust: Rust 异步入门 (作者洋芋,来自Rust语言中文社区)

    Rust每周一知 Rust 异步入门 原创 洋芋 Rust语言中文社区 前天 这是一篇博文翻译 xff0c 略有删减 xff0c 整理代码方便统一阅读 xff0c Github链接 xff1a https github com lester
  • (转)Julia PkgServer 镜像服务

    https mp weixin qq com s DyegFcNEjieJspc 3B5G6w Julia PkgServer 镜像服务 原创 Johnny Chen JuliaCN 昨天 长久以来 xff0c 受国内网络环境影响 xff0
  • python : pandas库的后继者polars库

    polars库是python的又一dataframe库 xff0c 显然 xff0c 在pandas库的光芒下 xff0c 要上位是不容易的 xff0c 必须有过硬的功夫 一 用法基本一致 从长相上看 xff0c 两者有孪生相 xff0c
  • 证券类私募主要需求及核心服务商

  • Python:同花顺全数据接口

    前往 xff1a http quantapi 10jqka com cn page 61 home 如果是windows 根据不同用户 xff0c 可以选择不同的下载 1 iFinDPy 模块 下载完成后 xff0c 会出现一个DataIn
  • 使用Python中PIL图形库进行截屏

    目的 xff1a 通过使用Python的一个图形库PIL xff08 Python Image Library xff09 对屏幕进行截图 步骤 xff1a 1 下载PIL xff08 路径 xff09 并安装 2 新建文件 截屏 py x
  • 详解Python中pyautogui库的最全使用方法

    详解Python中pyautogui库的最全使用方法 在使用Python做脚本的话 xff0c 有两个库可以使用 xff0c 一个为PyUserInput库 xff0c 另一个为pyautogui库 就本人而言 xff0c 我更喜欢使用py
  • python : pandas 中多重索引multiindex与多个标的dataframe

    多个标的dataframe 如何转成多重索引的dataframe 有点象 xff0c 有中证500股票的数据 xff0c 如何把这500只股票 xff0c 整成一个多重索引的dataframe span class token functi