给定一组如下所示的数据,每行长度为10个字符。它们是网络的链路,由4个或5个字符的节点号组成。下面是我将面临的情况的一个例子:
| 106374652 |
| 1038 1037 |
| 7061219637 |
| 82004 2082 |
由于数据集不太关心间距,而第1、2和4行可以通过sep=''或delim_whitespace=True轻松读取,因此我恐怕无法对第3行执行相同的操作。由于输入数据文件是由第三方软件生成的,所以我对它几乎无能为力 (除了在Excel中进行一些格式化,这似乎违反直觉……)请问,Pandas中是否有允许我指定字符数(在我的示例中为5)作为分隔符的内容
非常感谢你的建议
我想你要找的是^{} 读取一个固定宽度的文件。在这种情况下,您可以指定列规格:
列规范为0索引和端排他。您也可以使用
widths
参数,但在剥离|
之前,我会避免使用它,以确保正确地将变量读入为数字,而不是以管道开头或结尾的字符串在这种情况下,这将产生:
我通过了
header=None
,因为您的示例数据中缺少头。您可能需要根据需要进行调整。我还把你输入的所有空白线都删去了。如果输入中实际上有空行,那么我将首先运行:'\n'.join((s for s in input_string.split('\n') if len(s.strip()) != 0))
,然后将其传递给解析。在这里,您还需要首先将文件作为字符串加载,清理它,然后使用io.StringIO
将其传递给read_fwf
使用
read_csv
,可以将sep
指定为一组4或5位数字,然后只保留带有数字的列或者,您可以加载数据并使用
textwrap
模块的高级功能,只需指定宽度,它就会为您生成列输出:
相关问题 更多 >
编程相关推荐