如何从 ASCII 文件写入/读取带有 MultiIndex 的 Pandas DataFrame?

2024-02-14

我希望能够创建一只熊猫DataFrame使用 MultiIndexes 为行和列索引并从 ASCII 文本文件中读取它。我的数据如下所示:

col_indx = MultiIndex.from_tuples([('A',  'B',  'C'), ('A',  'B',  'C2'), ('A',  'B',  'C3'), 
                                   ('A',  'B2', 'C'), ('A',  'B2', 'C2'), ('A',  'B2', 'C3'), 
                                   ('A',  'B3', 'C'), ('A',  'B3', 'C2'), ('A',  'B3', 'C3'), 
                                   ('A2', 'B',  'C'), ('A2', 'B',  'C2'), ('A2', 'B',  'C3'), 
                                   ('A2', 'B2', 'C'), ('A2', 'B2', 'C2'), ('A2', 'B2', 'C3'), 
                                   ('A2', 'B3', 'C'), ('A2', 'B3', 'C2'), ('A2', 'B3', 'C3')], 
                                   names=['one','two','three']) 
row_indx = MultiIndex.from_tuples([(0,  'North', 'M'), 
                                   (1,  'East',  'F'), 
                                   (2,  'West',  'M'), 
                                   (3,  'South', 'M'), 
                                   (4,  'South', 'F'), 
                                   (5,  'West',  'F'), 
                                   (6,  'North', 'M'), 
                                   (7,  'North', 'M'), 
                                   (8,  'East',  'F'), 
                                   (9,  'South', 'M')], 
                                   names=['n', 'location', 'sex'])
size=len(row_indx), len(col_indx)
data = np.random.randint(0,10, size)
df = DataFrame(data, index=row_indx, columns=col_indx)
print df

我试过了df.to_csv() and read_csv()但他们不保留索引。

我正在考虑也许使用额外的分隔符创建一种新格式。例如,使用一行----------------标记列索引的结尾和|标记行索引的结尾。所以它看起来像这样:

one            | A   A   A   A   A   A   A   A   A  A2  A2  A2  A2  A2  A2  A2  A2  A2
two            | B   B   B  B2  B2  B2  B3  B3  B3   B   B   B  B2  B2  B2  B3  B3  B3
three          | C  C2  C3   C  C2  C3   C  C2  C3   C  C2  C3   C  C2  C3   C  C2  C3
--------------------------------------------------------------------------------------
n location sex :                                                                      
0 North    M   | 2   3   9   1   0   6   5   9   5   9   4   4   0   9   6   2   6   1
1 East     F   | 6   2   9   2   7   0   0   3   7   4   8   1   3   2   1   7   7   5
2 West     M   | 5   8   9   7   6   0   3   0   2   5   0   3   9   6   7   3   4   9
3 South    M   | 6   2   3   6   4   0   4   0   1   9   3   6   2   1   0   6   9   3
4 South    F   | 9   6   0   0   6   1   7   0   8   1   7   6   2   0   8   1   5   3
5 West     F   | 7   9   7   8   2   0   4   3   8   9   0   3   4   9   2   5   1   7
6 North    M   | 3   3   5   7   9   4   2   6   3   2   7   5   5   5   6   4   2   9
7 North    M   | 7   4   8   6   8   4   5   7   9   0   2   9   1   9   7   9   5   6
8 East     F   | 1   6   5   3   6   4   6   9   6   9   2   4   2   9   8   4   2   4
9 South    M   | 9   6   6   1   3   1   3   5   7   4   8   6   7   7   8   9   2   3

Pandas 是否有办法使用多索引向 ASCII 文件写入/读取 DataFrame?


不确定您使用的是哪个版本的 pandas,但与0.7.3你可以导出你的DataFrame到 TSV 文件并通过执行以下操作保留索引:

df.to_csv('mydf.tsv', sep='\t')

您需要导出到 TSV 与 CSV 的原因是因为列标题具有,其中的人物。这应该可以解决你问题的第一部分。

第二部分变得有点棘手,因为据我所知,您需要事先了解您希望 DataFrame 包含的内容。特别是,您需要知道:

  1. TSV 上的哪些列代表该行MultiIndex
  2. 并且其余的列也应该转换为MultiIndex

为了说明这一点,让我们将上面保存的 TSV 文件读回新的DataFrame:

In [1]: t_df = read_table('mydf.tsv', index_col=[0,1,2])
In [2]: all(t_df.index == df.index)
Out[2]: True

所以我们设法阅读mydf.tsv into a DataFrame与原始行具有相同的行索引df. But:

In [3]: all(t_df.columns == df.columns)
Out[3]: False

这里的原因是因为 pandas (据我所知)无法将标题行正确解析为MultiIndex。正如我上面提到的,如果您事先知道您的 TSV 文件头代表一个MultiIndex那么您可以执行以下操作来解决此问题:

In [4]: from ast import literal_eval
In [5]: t_df.columns = MultiIndex.from_tuples(t_df.columns.map(literal_eval).tolist(), 
                                              names=['one','two','three'])
In [6]: all(t_df.columns == df.columns)
Out[6]: True
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 ASCII 文件写入/读取带有 MultiIndex 的 Pandas DataFrame? 的相关文章

  • 在Python3.6中调用C#代码

    由于完全不了解 C 编码 我希望在我的 python 代码中调用 C 函数 我知道有很多关于同一问题的问答 但由于一些奇怪的原因 我无法从示例 python 模块导入简单的 c 类库 以下是我所做的事情 C 类库设置 我使用的是 VS 20
  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • Python 3 __getattribute__ 与点访问行为

    我读了一些关于 python 的对象属性查找的内容 这里 https blog ionelmc ro 2015 02 09 understanding python metaclasses object attribute lookup h
  • 如何限制Django CreateView中ForeignKey字段的选择?

    我有一个沿着这些思路的模型结构 models py class Foo models Model class Bar models Model foo models ForeignKey Foo class Baz models Model
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 如何在Python和Selenium中通过标签名称或id获取元素[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Python 和 Selenium 获取输入 但它向我显示错误 我该如何解决这个错误 inputElement send keys getStock getStocklFunc 0 Error i
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • 无法截取宽度为 0 的屏幕截图

    我正在尝试截取 Bootstrap 模态内元素的屏幕截图 经过一番努力 我终于想出了这段代码 driver get https enlinea sunedu gob pe driver find element by xpath div c
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • select() 可以在 Windows 下使用 Python 中的文件吗?

    我正在尝试在 Windows 下运行以下 python 服务器 An echo server that uses select to handle multiple clients at a time Entering any line o
  • Scipy 稀疏 Cumsum

    假设我有一个scipy sparse csr matrix代表下面的值 0 0 1 2 0 3 0 4 1 0 0 2 0 3 4 0 我想就地计算非零值的累积和 这会将数组更改为 0 0 1 3 0 6 0 10 1 0 0 3 0 6
  • 检查字符串是否只有字母和空格 - Python

    试图让 python 返回一个字符串仅包含字母和空格 string input Enter a string if all x isalpha and x isspace for x in string print Only alphabe
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t

随机推荐

  • 将多个文件上传到 Azure Blob 存储

    对于 Windows Azure 来说还很陌生 我已经按照这个教程进行操作 tutorial http blogs msdn com b jnak archive 2010 01 11 walkthrough windows azure b
  • 在 Express 中有条件地提供静态文件的最佳方法是什么?

    我正在构建一个应用程序 它有两个独立的部分 在前端我将其构建为两个独立的 Angular 应用程序 我这样做是为了更好地划分对代码库的控制访问权 而不是不必要地让一些团队成员访问他们不需要的代码 因此有两个独立的应用程序 由同一个 Node
  • 如何扩展 jQuery UI 日期选择器来修改“今日”按钮并添加帮助图标

    我想扩展基于 jQuery UI datepicker 小部件 并将其称为 datepickerHelp jQuery UI 日期选择器小部件 http api jqueryui com datepicker 我对扩展感兴趣而不是直接修改
  • Docker 主机的 Elastic Beanstalk 环境变量

    我有一个 EB 环境 其中正确部署了 Docker Web 应用程序 rails 我设置了几个 EB 环境变量 它们在容器中正确可见 现在 我希望这些 EB 环境变量对 EC2 实例主机可见 以便我可以在 docker 构建过程中使用它们
  • 将 scala/spark 信息写入 MongoDB

    我有一个日志数据 其中包含如下数据 Started by timer Finished SUCCESS 对于每个日志数据 日志状态 此处为 Finished 和状态 SUCCESS 需要写入MongoDB case class Logs s
  • XMLHttpRequest 和 http 流

    我的目标是从浏览器读取 HTTP MP3 音频流并访问原始音频数据 HTML5 让我可以轻松播放流 但据我所知 不允许访问原始音频数据 它只是播放它 JS XMLHTTP请求可以通过HTTP下载文件并处理原始音频数据 它似乎是一个很好的候选
  • 这个 MATLAB 循环是否有更优雅的替代方案?

    我想更好地在 MATLAB 中对循环进行矢量化 目前 我正在尝试计算整数列表中值的出现次数 我的代码与此类似 list 1 2 2 3 1 3 2 2 2 1 5 occurrence list zeros 1 max list for x
  • 为什么 uglify-js 会报告“警告:输出超过 32000 个字符”?

    构建管道是 Typescript browserify browserify css uglify 运行时库 react bootstrap 到目前为止 我的应用程序功能很少 这就是为什么我问这是否会在以后困扰我 即使它现在看起来可以工作
  • 析构函数与 IDisposable?

    我读过有关在 C 中处置对象 IDisposable 接口和析构函数的内容 但对我来说 它们似乎做了同样的事情 两者有什么区别 我为什么要使用其中一种而不是另一种 事实上 在这个示例 下面的链接 中 这段代码同时使用了 IDisposabl
  • 语音识别和语音合成入门

    我想开始语音识别和语音合成 在基于语音识别的原型 https stackoverflow com questions 3865351 prototype based on speech recognition有人告诉我使用微软语音服务器 s
  • 显示相同项目的放大弹出窗口

    参考这个question https stackoverflow com questions 26151953 magnific popup showing first item only 它有一个有用的答案 但它是部分答案 因为它只显示三
  • Ajax 调用返回整个页面

    我有以下页面 其中包含一些随机提示 http www javaexperience com tips 我只想在网站的其他页面上显示提示 因此我进行 ajax 调用并将 ajax 响应返回的任何内容添加到 Div 的 HTML 中 DIV h
  • 使用 tidyverse 或 dplyr 进行简单 mutate 引发的错误

    我在使用 tidyverse 包时遇到了严重的问题 无法调试 例如 即使在我过去已经制作的项目中 mutate 也无法正常工作 这一切都是从我安装以下软件包时开始的 library pdftools library tm library s
  • 我不小心删除了 Android 密钥库,如何恢复?

    好吧 我的动作很顺利 我现在无法更新市场中的任何应用程序 因为我不小心删除了我的 Android 密钥库 有谁知道我怎样才能把它拿回来 我尝试过运行恢复程序 但由于某种原因它没有出现 如果您丢失了私钥 它将永远消失 除非您有备份 如果您可以
  • 在asp.net 3.5中导出为pdf

    我正在开发一个 asp net 3 5 应用程序 并且有一个包含表格表单数据的页面 我需要将其导出为 pdf 并进行一些额外的格式化 该页面还有一些图像位于同一表格内 一些图像位于表格外 我也希望将这些图像导出为 pdf 我怎样才能在asp
  • 如何查看php字节码文件

    我这样做是为了学习目的 我读过很多文章 PHP 首先将其源代码转换为字节码 但我无法找到一种方法来查看字节码格式 它是什么样子的 在java和C中有很多方法可以查看字节码文件 但无法在 php 中找到任何文章来查看转换后的字节码 要将 PH
  • 运行集成测试时,构建在 Jetty 启动时等待

    我正在尝试运行一些集成 验收测试 我只想在传递环境变量时运行这些测试 因此我使用以下命令 mvn clean install Denv acceptance 但构建停止于 2015 09 28 18 56 19 273 INFO oejsh
  • 在 C# 中获取网络摄像头的当前状态

    我试图弄清楚如何检查网络摄像头 视频捕获设备是否已被另一个应用程序使用 而无需实际激活它 我当前的方法是使用 AForge NET 库并使用 VideoCaptureDevice 对象的 IsRunning 属性 如下所示 var vide
  • PHP 合并具有相同键和一个相同值的数组

    我需要合并一个 PHP 数组 这个数组有 2 个名为 targetXX 的数组 我可以有 2 个或更多 每个目标都有相同的键 对于每个键 我有一个包含 2 个值 a 和 b 的数组 a 在两个目标中始终相同 但我需要像这样合并两个 B 值
  • 如何从 ASCII 文件写入/读取带有 MultiIndex 的 Pandas DataFrame?

    我希望能够创建一只熊猫DataFrame使用 MultiIndexes 为行和列索引并从 ASCII 文本文件中读取它 我的数据如下所示 col indx MultiIndex from tuples A B C A B C2 A B C3