gpt4 book ai didi

python - 没有空间的文件中的 Pandas read_csv?

转载 作者:行者123 更新时间:2023-12-04 16:24:23 24 4
gpt4 key购买 nike

给定一组如下所示的数据,每行长度为 10 个字符。它们是网络的链接,由 4 或 5 个字符节点号的组合组成。以下是我将面临的情况的示例:

|10637 4652|

| 1038 1037|

|7061219637|

|82004 2082|

由于数据集不太关心间距,虽然可以使用 sep=' ' 或 delim_whitespace=True 在 Pandas 中轻松读取第 1、2 和 4 行,但恐怕我不能这样做第 3 行。我对输入数据文件几乎无能为力,因为它是从第三方软件生成的(除了在 Excel 中进行一些格式化,这似乎违反直觉......)请问,Pandas 中是否有允许我指定字符数(在我的情况下为 5)作为分隔符?

非常感谢您的建议。

最佳答案

我认为您正在寻找的是 pd.read_fwf读取固定宽度的文件。在这种情况下,您将指定列规范:

pd.read_fwf(io.StringIO('''|10637 4652|
| 1038 1037|
|7061219637|
|82004 2082|'''), colspecs=[(1, 6), (6, 11)], header=None)

列规范以 0 为索引且以排他为结尾。您也可以使用 widths 参数,但我会避免在剥离 | 之前使用它,以确保您的变量以数字而不是字符串开头或以管道结尾。

在这种情况下,这将产生:

       0      1
0 10637 4652
1 1038 1037
2 70612 19637
3 82004 2082

由于您的示例数据中缺少 header ,我通过了 header=None。您可能需要根据需要进行调整。我还删除了您输入中的所有空白行。如果输入中实际上有空行,那么我将首先运行: '\n'.join((s for s in input_string.split('\n') if len(s.strip()) != 0)) 在传递它进行解析之前。在那里,您还需要首先将文件作为字符串加载,清理它,然后将其与 io.StringIO 一起传递给 read_fwf

关于python - 没有空间的文件中的 Pandas read_csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68353026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com