pandas 将多列索引应用于数据框

2024-01-05

情况是我有一些文件,其中包含具有多个字段的各种股票的 time_series 数据。每个文件包含

time, open, high, low, close, volume

目标是将所有内容放入表单的一个数据框中

field      open                              high                            ...
security    hk_1      hk_2      hk_3 ...      hk_1      hk_2      hk_3 ...  ...
time
t_1      open_1_1  open_2_1  open_3_1 ...  high_1_1  high_2_1  high_3_1 ...  ...            
t_2      open_1_2  open_2_2  open_3_2 ...  high_1_2  high_2_2  high_3_2 ...  ...
...        ...        ...       ... ...       ...       ...       ... ...  ...

我创建了一个多索引

fields = ['time','open','high','low','close','volume','numEvents','value']
midx = pd.MultiIndex.from_product([security_name'], fields], names=['security', 'field'])

首先,尝试将该多索引应用到我从 csv 读取数据中获得的数据帧(通过创建新的数据帧并添加索引)

for c in eqty_names_list:

    midx = pd.MultiIndex.from_product([[c], fields], names=['security', 'field'])

    df_temp = pd.read_csv('{}{}.csv'.format(path, c))
    df_temp = pd.DataFrame(df_temp, columns=midx, index=df_temp['time'])
    df_temp.df_name = c
    all_dfs.append(df_temp)

然而,新的数据帧仅包含 nan

security    1_HK
field       time    open    high    low     close   volume
time                                
 NaN         NaN     NaN     NaN    NaN       NaN      NaN

此外,它仍然包含时间列,尽管我尝试将其设为索引(以便稍后我可以按索引加入其他股票的所有其他数据帧以获取聚合数据帧)。

如何在不丢失数据的情况下将多重索引应用于数据帧,然后像这样加入数据帧

security    1_HK
field       time    open    high    low     close   volume
time

创建类似的东西(注意层次结构字段和安全性已切换)

field       time                open    high        ...
security    1_HK    2_HK ...    1_HK    2_HK ...    ...
time

我认为你可以先列出所有文件files,然后通过列表理解获取所有 DataFrame 和concat http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html按列排列(axis=1)。如果添加参数keys, 你得到Multiindex在列中:

Files:

a.csv https://dl.dropboxusercontent.com/u/84444599/web/a.csv, b.csv https://dl.dropboxusercontent.com/u/84444599/web/b.csv, c.csv https://dl.dropboxusercontent.com/u/84444599/web/c.csv

import pandas as pd
import glob

files = glob.glob('files/*.csv')
dfs = [pd.read_csv(fp) for fp in files]

eqty_names_list = ['hk1','hk2','hk3']
df = pd.concat(dfs, keys=eqty_names_list, axis=1)

print (df)
  hk1       hk2       hk3      
    a  b  c   a  b  c   a  b  c
0   0  1  2   0  9  6   0  7  1
1   1  5  8   1  6  4   1  3  2

最后的需要swaplevel http://pandas.pydata.org/pandas-docs/stable/generated/pandas.MultiIndex.swaplevel.html and sort_index http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_index.html:

df.columns = df.columns.swaplevel(0,1)
df = df.sort_index(axis=1)
print (df)
    a           b           c        
  hk1 hk2 hk3 hk1 hk2 hk3 hk1 hk2 hk3
0   0   0   0   1   9   7   2   6   1
1   1   1   1   5   6   3   8   4   2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas 将多列索引应用于数据框 的相关文章

随机推荐

  • CSS:为什么当使用溢出:隐藏时,vertical-align:baseline在Firefox上停止工作?

    您可以通过运行以下命令来重现此内容测试用例 http dl dropbox com u 6900 resources 20101129 vertical align baseline overflow hidden html 结果如下面的屏
  • Visual Studio Code - 终端黑屏

    自从 Visual Studio Code 处于测试版以来 我一直在使用它 我最喜欢它的功能之一是在应用程序中使用 Angular CLI 的集成终端 自从我拥有笔记本电脑以来 它一直运行良好 但我在圣诞节假期期间重新安装了 Windows
  • 替代 Y 组合器定义

    我最近花了一些时间研究 Y 组合器 我发现它通常定义 或多或少 如下 这是在 C 中 但选择的语言并不重要 public delegate TResult SelfApplicable
  • Android TextureView OpenGLRenderer: GL_INVALID_OPERATION

    我有两个具有TextureView 的片段来显示相机预览或播放视频 使用应用程序一段时间后 玩玩屏幕 我在 logcat 中收到此错误 OpenGLRenderer GL INVALID OPERATION 我从我的碎片中释放一切 所有成员
  • 如何在两个项目之间共享存储库和服务类

    我正在开发 2 个项目 一个 Web 应用程序 Spring MVC 和一个独立的后端服务应用程序 Spring boot 它们大量交互 我对两者都使用 hibernate 并且它们都是使用 Netbeans IDE 进行编码的 我的 问题
  • Twitter 卡片验证器在开发时出现错误

    我在验证开发中的 Twitter 卡时遇到问题 我已将路由器的公共 IP 配置为指向我的内部 LAN IP 端口http 119 21 79 135 3000 鉴于元标签已就位
  • 如何使用 Orika 映射 java.time.LocalDate 字段?

    发生这种情况是因为 LocalDate 不是JavaBean https en wikipedia org wiki JavaBeans 它没有零参数构造函数 要解决此问题 您需要创建一个 LocalDateConverter public
  • UITextFields 中联系信息的快捷方式或自动填充

    当我在 iOS 中的 Safari 中打开一个要求输入姓名和地址的表单时 我会在键盘区域中找到快捷方式 例如 这是当焦点位于名字字段时的键盘 我可以点击 罗伯特 而不是输入名字 姓氏 电话 电子邮件 邮政编码字段也会发生类似的情况 我可以在
  • 更新到 Angular 8 后,Material-UI 下拉菜单在 IE11 中导致错误

    打开材质菜单时 使用材质 8 的 Angular 8 应用程序在 IE11 上抛出以下错误 Unable to get property opacity of undefined or null reference 它与 Angular 7
  • 计算表面包含 4 个点的球体中心 (C#)

    我正在使用名为 MIConvexHull 的 3D Voronoi 库 它计算 3D 空间中一系列点的 3D Voronoi 图 然而 它没有提供有关 Voronoi 图结构的高级信息 报告的边只是一系列坐标对 然后必须计算其外心 现在 该
  • 使用 Azure 函数处理 Azure Datalake 存储文件

    我定期在 Azure Datalake 存储上的特定文件夹中获取文件 文件一到达 我想使用 Azure 函数进一步处理它 那可能吗 UPDATE With 多协议接入 https learn microsoft com en us azur
  • 当变量设置为新对象时,VBA 对象是否会被销毁?

    我还没有找到这个问题的具体答案 所以希望有人能为我解答 据我了解 VBA 垃圾收集器使用引用计数来确定是否不再需要某个对象 并显式解除与变量的关联 从而减少引用计数 Set objectVariable Nothing 这是我现在正在处理的
  • 简化 CNF 公式,同时保留某些变量的所有解决方案

    有关的 CNF 简化 https stackoverflow com questions 23461191 cnf simplification 事实上 我认为这个问题的提交者可能是在追求我想要的东西 有许多工具可用于简化 或求解前 预处理
  • Boost.Log 配置文件

    我正在向旧的 C 程序添加日志记录 经过一番研究后 我决定使用升压日志 http www boost org doc libs 1 56 0 libs log doc html index html 该文档充满了创建接收器和过滤器的示例 但
  • Arduino 上的中断会中断其他中断吗?

    我有一个Arduino Uno http arduino cc en Main ArduinoBoardUno 很棒的小设备 它有两个中断 让我们称呼他们吧0 and 1 我将一个处理程序附加到中断 0 并将另一个处理程序附加到中断 1 使
  • 如何将lucene文件从2.2升级到4.3.1

    我在 lucene V 2 2 中有大量索引数据 并且我已将 lucene jar 升级到 4 3 1 新版本支持升级2 2文件 如果是 我该怎么做 Lucene 保证索引向后兼容以前的主要版本 这意味着 Lucene 4 X 应该能够读取
  • 如何将 CSS 动画导出为动画 PNG、gif 或 WEBP *具有透明度*?

    Press 运行代码片段 下面可以看到我想要保存的动画加载微调器 我想用透明度替换所有绿色 另外 我希望动画能够完美循环 我尝试使用OBS录制屏幕截图视频 然后上传到https ezgif com video to gif https ez
  • Bootstrap对齐不同高度的列

    我希望能够将未知数量的列与未知的高度对齐 由于我不知道会有多少列 因此使用多行来分割列对我来说并不理想 我几乎可以通过使用列表项来达到我想要的结果 我不喜欢使用列表项的一件事是 一旦页面达到调整大小点 我就会在右侧留下额外的空间 顶部的一组
  • edge-sql.js 如何设置connectionString?

    var edge require edge var getProduct edge func sql function select from Products where ProductId myProductId getProduct
  • pandas 将多列索引应用于数据框

    情况是我有一些文件 其中包含具有多个字段的各种股票的 time series 数据 每个文件包含 time open high low close volume 目标是将所有内容放入表单的一个数据框中 field open high sec