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