当前位置: 首页 > 知识库问答 >
问题:

使用熊猫读取制表符分隔的文件-适用于Windows,但不适用于Mac

凤高翰
2023-03-14

我一直在使用Pandas/Python在Windows中读取以制表符分隔的数据文件,没有任何问题。该数据文件在前三行中包含注释,随后是标题。

df = pd.read_csv(myfile,sep='\t',skiprows=(0,1,2),header=(0))

我现在试图阅读这个文件与我的Mac。我第一次在Mac上使用Python。)我得到以下错误。

pandas.parser.CParserError: Error tokenizing data. C error: Expected 1
fields in line 8, saw 39

如果将read_csv的error_bad_lines参数设置为False,我将获得以下信息,这些信息将一直持续到最后一行的末尾。

Skipping line 8: expected 1 fields, saw 39
Skipping line 9: expected 1 fields, saw 125
Skipping line 10: expected 1 fields, saw 125
Skipping line 11: expected 1 fields, saw 125
Skipping line 12: expected 1 fields, saw 125
Skipping line 13: expected 1 fields, saw 125
Skipping line 14: expected 1 fields, saw 125
Skipping line 15: expected 1 fields, saw 125
Skipping line 16: expected 1 fields, saw 125
Skipping line 17: expected 1 fields, saw 125
...

我需要为编码参数指定一个值吗?似乎我不应该这样做,因为在Windows上读取文件效果很好。

共有2个答案

濮阳功
2023-03-14

另一个选项是将engine='python'添加到命令pandas。读取\u csv(文件名,sep='\t',engine='python')

段干宾白
2023-03-14

最大的线索是所有行都在一行中返回。这表示线路终止符被忽略或不存在。

您可以为csv_reader指定行终止符。如果你在mac上,创建的行将以\r结束,而不是linux标准的\n,或者更好的是窗口的吊带和皮带方法

pandas.read_csv(filename, sep='\t', lineterminator='\r')

您还可以使用编解码器软件包打开所有数据。这可能会以牺牲文档加载速度为代价增加健壮性。

import codecs

doc = codecs.open('document','rU','UTF-16') #open for reading with "universal" type set

df = pandas.read_csv(doc, sep='\t')
 类似资料:
  • 背景: 最近我一直在开发一个程序,该程序对输入数据文件(用户以完整路径或名称的形式给出,如果它位于程序创建的名为inputFiles的文件夹中)执行一些数据分析并吐出一堆输出数据文件(使用CSV)。 问题: 我遇到的问题是,当我运行时。jar在我的Windows机器上,它将创建3个文件夹(InputFiles、TempFiles和OutPutFiles),但当程序在Mac上时,GUI会启动,但不会

  • 问题内容: 我试图读取通过via 创建的数据框,但得到了。我认为这可能与索引为MultiIndex的事实有关,但我不确定如何处理。 调用了55k行的原始数据框,并通过以下方式创建了该数据框: 如果要使用它,这是输出。 当我对这小部分数据(5行)进行处理时,我得到一个。 这是完整的堆栈: 但是,当我在整个数据帧(55k行)上执行此操作时,我得到一个无效的指针错误,并且IPython内核死亡。有任何想

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 因此,我正在构建这个游戏和一个地图编辑器/sdk类型的协议。在我运行w7的台式电脑和我的朋友运行w10的笔记本电脑上,一切都工作得非常好。我可以添加对象并四处移动它们(每个对象都有一个自动更新属性窗口),一切都很好。 我目前正在旅行,所以我决定将项目复制到我的macbook上。UI上的一切都仍然有效,除了停止渲染的东西。我知道对象存在于应用程序中,因为我可以单击它们所在的位置,属性更新就像在我的桌

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 有人能帮我解决这个问题吗?当然,在Linux上运行时,我已经将路径更改为。