【问题标题】:Pandas read_table errors熊猫 read_table 错误
【发布时间】:2017-05-23 23:31:15
【问题描述】:

我是 Python 新手,正在尝试学习 Pandas,但很早就遇到了问题。我正在尝试读取日志文件并将其保存为数据框。它是一个以空格分隔的文本文件,带有一个包含列名的标题行。这是我正在运行的示例代码,只是为了测试读取功能。

import pandas as pd
data = pd.read_table('C:\Aerosonde Test Logs\MH_Data\TEC_20170105-083220\222_1_4435_.log',
               delim_whitespace='True', nrows=20)
print(data)

下面是日志文件的sn-p。

<Clock>[ms] <Year>  <Month> <Day>   <Hours> <Minutes>   <Seconds>   <Lat>[rad]  <Lon>[rad]  <Height>[m]
48161   2017    1   5   4   30  13.366  5.02E-06    8.05E-07    267.37
49161   2017    1   5   4   30  14.366  5.01E-06    7.95E-07    266.61
50161   2017    1   5   4   30  15.366  5.02E-06    7.95E-07    266.24

虽然我不断收到错误。当我尝试阅读整个日志文件时,我收到了错误。

"UnicodeEncodeError: 'mbcs' 编解码器无法对位置 0--1 中的字符进行编码:无效字符"

我尝试在 Excel 中打开日志文件,然后将其再次保存为制表符分隔文件。当我尝试使用相同的代码打开该文件时,我得到了一个单独的错误。

"TypeError: 需要一个整数"

我尝试跳过标题行,认为多余的字符存在问题,但这也没有解决问题。所以现在我很茫然,希望得到一些建议!

编辑:感谢 Matteo,我能够通过在文件路径字符串中添加 '\' 来修复 UnicodeEncodeError。现在虽然我得到了 TypeError: an integer is required 在尝试打开日志文件时。尝试打开任何空格或制表符分隔的文件时,我似乎得到了它。我刚刚制作了一个快速空格分隔的文件,我得到了同样的错误。我什至在十六进制编辑器中查看了数据以仔细检查,我没有看到任何奇数字节,所以不知道发生了什么。

当前读表代码

data = pd.read_table('C:\\Aerosonde Test Logs\\MH_Data\\TEC_20170105-083220\\TestLogFile.txt',
               delim_whitespace='True')

HexData for test text file

【问题讨论】:

  • 仅供参考 - 我将您提供的数据复制并粘贴到文本编辑器(在我的情况下为 vim)中,将其保存为 csv,然后在 pandas 中打开它没有任何问题。我正在运行 pandas 0.19.1。
  • 我从 excel 复制了该数据,因此特定字节与原始日志文件不同。对于它的价值,我只是尝试在 excel 中打开原始日志文件并将其保存为 csv,然后能够使用 read_csv 打开它而没有错误。我想这意味着分隔符有问题?
  • 不确定 - 听起来 Excel 版本的文件格式和编码器出现了一些问题,导致无法读取。

标签: python pandas text


【解决方案1】:

我认为错误是由于日志文件路径的字符串引起的;你可以尝试把 \ 而不是 . 另见UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: invalid character upon running a PyInstaller-compiled script

【讨论】:

  • 所以将 \ 添加到路径字符串似乎确实有效,现在我没有收到 UnicodeEncodeError!这样就完成了一步!不幸的是,我仍然收到“TypeError:需要一个整数”。正如我在其他回复中所述,如果我在 Excel 中打开文件并另存为 CSV,那么我可以使用 Read_csv 打开文件而不会出现错误,但是当我将其另存为制表符分隔文件和 read_table 时,这不起作用。我猜这意味着我调用分隔符的方式或日志文件本身存在错误?
  • 谢谢。它有帮助。
  • 确保路径名是否为字母字符
【解决方案2】:

Matteo Franchi 通过建议我在文件路径字符串中添加一个额外的“\”来修复 UnicodeEncodeError,当我尝试读取数据时,该字符串仍然给我留下了 TypeError。显然我没有正确指定 delim_whitespace 。我从一个例子中复制了这个论点,其中 True 语句在引号内并且不起作用。下面的代码运行良好。

data = pd.read_table('C:\\Aerosonde Test Logs\\MH_Data\\TEC_20170105-083220\\222_1_4435_.log',
                 delim_whitespace=True)

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 2016-06-11
    • 2013-05-15
    • 2023-04-01
    • 2012-05-27
    • 2017-05-24
    • 2014-06-05
    • 1970-01-01
    相关资源
    最近更新 更多