【问题标题】:Python reading text file not working with numpy/pandasPython 读取文本文件不适用于 numpy/pandas
【发布时间】:2019-10-04 19:59:08
【问题描述】:

我想将一个文本文件读入 Python,但我似乎做不到。如果我使用np.loadtxt('file'),我会收到一个 URL 错误(不知道为什么......)。如果我使用熊猫,它似乎无法正确解析列。它看起来像这样:

   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00
  -3.6344707e-03  -2.6598413e-02   8.4534688e-02  -8.6057356e-04   3.4833275e-04  -1.7481226e-05
  -7.6545137e-03  -6.9117133e-02   1.0195991e-02  -1.1818548e-03   6.2261736e-04  -1.1414899e-04

我确定问题的一部分是因为分隔符是 3 个空格,但我似乎无法解决这个问题。

熊猫也是一个可以接受的替代品...

【问题讨论】:

  • loadtxt 该文件应该没有问题 - 只要您提供正确的文件名!如果出现url 错误,则意味着通过名称或其他方式访问文件时出现问题。阅读不是问题。你真的在 loadtxt 调用中使用了'file' 吗?
  • 基于numpy delimiter 的文档:str, optional "用于分隔值的字符串。默认情况下,这是任何空格。"看来您的文件应该没有任何问题,前提是您确实导入了正确的文件。

标签: python pandas numpy


【解决方案1】:

试试这个...

import pandas as pd

df = pd.read_csv('file.txt', delim_whitespace=True, header=None)

delim_whitespace=True 是空格的分隔符。

或者,您可以使用

import pandas as pd

df = pd.read_fwf('filet.txt')

其中read_fwf 代表“固定宽度格式的行”。同样,我还没有测试过,但我相信它应该可以工作。

【讨论】:

  • 太好了,感谢您的建议。只是出于好奇,有没有办法用 numpy 轻松做到这一点?
【解决方案2】:

loadtxt 这样的文件应该不会有问题。使用打印的复制粘贴模拟读取:

In [2]: txt = """   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+0
   ...: 0   0.0000000e+00   0.0000000e+00 
   ...:   -3.6344707e-03  -2.6598413e-02   8.4534688e-02  -8.6057356e-04   3.483
   ...: 3275e-04  -1.7481226e-05 
   ...:   -7.6545137e-03  -6.9117133e-02   1.0195991e-02  -1.1818548e-03   6.226
   ...: 1736e-04  -1.1414899e-04"""                                             
In [3]: np.loadtxt(txt.splitlines())                                            
Out[3]: 
array([[ 0.0000000e+00,  0.0000000e+00,  0.0000000e+00,  0.0000000e+00,
         0.0000000e+00,  0.0000000e+00],
       [-3.6344707e-03, -2.6598413e-02,  8.4534688e-02, -8.6057356e-04,
         3.4833275e-04, -1.7481226e-05],
       [-7.6545137e-03, -6.9117133e-02,  1.0195991e-02, -1.1818548e-03,
         6.2261736e-04, -1.1414899e-04]])

【讨论】:

    猜你喜欢
    • 2022-11-12
    • 2021-03-18
    • 2022-09-23
    • 2013-08-19
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    相关资源
    最近更新 更多