【问题标题】:Trouble Writing CSVs to binary in Pandas在 Pandas 中将 CSV 写入二进制文件时遇到问题
【发布时间】:2016-05-23 00:15:30
【问题描述】:

背景

我有一些要拆分的数据帧,然后将各个列作为签名短裤写入二进制文件。

代码

for i in range(0, len(filesList)):
    df = pd.read_csv(myPath + '/' + filesList[i], sep='\t', header=None)
    dfA = df[1]
    dfA = dfA - np.mean(dfA)
    dfA = 10000*(dfA/(np.max(dfA)-np.min(dfA)))
    dfA = dfA.astype(int)
    dfA.to_csv(path=writeOutDirectoryPath + '/' + filesList[i] + 'LeadA', mode='wb', index=False)

一切都通过将系列 dfA 转换为整数(我认为,这完成了将它们转换为可以作为签名短裤读取的格式;对于这个特定的转换后数据集,我所有的值都在 -6000 到 6000 之间。

问题

我希望 dfA.to_csv 以二进制形式写入文件,因此 mode='wb'。我收到一个错误:

f = open(path, mode, errors='replace') ValueError: binary mode doesn't take an errors argument

我一定做错了什么,但我不知道是什么。也许 to_csv 不能写出二进制文件,但我在文档中找不到任何表明这一点的东西。除非告诉我我做错了什么,否则将 DataFrame 中的信息转换为二进制形式的最佳方法是什么?

编辑

将文件写出 CSV 很简单(我已经可以做到)。如果有人有将 CSV 转换为二进制文件的方法,我也完全愿意接受。

【问题讨论】:

  • CSV 是纯文本(例如 ASCII)“逗号分隔值”文件...作为二进制文件这样做是没有意义的。
  • 我知道 CSV 是什么,但没有明确的 to_text 或 to_binary 并且错误消息很神秘。如果我错过了文档中的某些内容,请随时指出。

标签: python pandas


【解决方案1】:

当 Python 3 尝试从 pandas 中打开文件时,内置 open() 函数会出错,因为二进制文件模式仅支持 None 作为错误参数。它可能仅适用于 pandas 的“w”模式。

Python 3 open() docs不解释,但显示in library code here.

您应该查看here 以获取有关使用 python struct 包适当地二进制编写类型的完整描述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2019-02-20
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2017-09-01
    相关资源
    最近更新 更多