【问题标题】:Python 3 Pandas write to CSV format column as stringPython 3 Pandas 以字符串形式写入 CSV 格式列
【发布时间】:2016-12-17 02:57:59
【问题描述】:

在处理格式奇怪的 Excel 数据和以字符串格式写入 CSV 时遇到问题。在我的示例数据中,我正在导入的 Excel 表有一列 ('Item_Number'),单元格中的奇数数据如下所示:="0001"、="00201"、2002AA、1003B。

当我尝试输出到 csv 时,结果如下所示:1、201、2002AA、1003B。 当我尝试输出到excel时,结果是正确的:0001、00201、2002AA、1003B。

所有的数据类型都是对象。我的 .to_csv() 命令中是否缺少参数?

df = pd.read_excel(filename,sheetname='Sheet1', converters= {'Item_Number':str})
df.to_csv('Test_csv.csv')
df.to_excel('Test_excel.xlsx')

尝试了替换“=”和“”的不同迭代,但没有响应。

df.Item_Number.str.replace('=','')

目前使用 excel 输出,但好奇是否有办法在 CSV 中保留字符串格式。谢谢:)

【问题讨论】:

  • 对我来说它很完美。你如何测试你的文件?通过df = pd.read_csv('Test_csv.csv') 还是通过文本编辑器?
  • 我在 excel 中以 csv 格式打开它。将再次测试。
  • 在 excel 中以 csv 格式打开它。试过: df = pd.Series([="0001", ="00201", 2002AA, 1003B]).astype(str) 但该格式不会运行。看起来 read.excel() 函数可以从 excel 电子表格中解释 ="0001" 并正确导出,但不能正确导出到 csv。需要明确的是,=“0001”在单元格中。
  • 进一步研究 - 这可能是一个 excel 问题,而不是 Python Pandas 问题:stackoverflow.com/questions/137359/excel-csv-number-cell-format

标签: python-3.x csv pandas formatting


【解决方案1】:

使用 Python 3 Pandas 打开一个包含看起来像 ="0001" 的数据的 Excel 电子表格将正确转到数据框。 CSV 会将其变回“1”。与 CSV 保持相同的格式显然是一个已知问题(来自我上面的评论)。为了保持格式,我必须像这样将 =" " 添加回数据中:

df['Item_Number'] = '="' + df['Item_Number'] + '"'

不确定是否有更简洁的版本可以让 Excel 打开的 CSV 文件显示 0001 不带引号和等号。

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 2021-12-05
    • 2021-02-25
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多