【问题标题】:Using Pandas to write file creates blank lines使用 Pandas 写入文件会创建空行
【发布时间】:2019-06-01 00:12:52
【问题描述】:

我正在使用 pandas 库将 mysql 数据库的内容写入 csv 文件。

但是当我写 CSV 时,每隔一行都是空白的:

另外,它在左侧打印我不想要的行号。第一列应该是“帐号”。

这是我的代码:

destination = 'output_file.txt'
read_sql = """ SELECT LinkedAccountId,ProductName,ItemDescription,ResourceId,UnBlendedCost,UnBlendedRate,Name,Owner,Engagement FROM billing_info ;"""
fieldnames = ['Account Number', 'Product Name', 'Item Description', 'Resource ID', 'UnBlended Cost', 'UnBlended Rate', 'Name', 'Owner', 'Engagement']
# Open the file
f = open(destination, 'w')
cursor.execute(read_sql)
while True:
    # Read the data
    df = pd.DataFrame(cursor.fetchmany(1000))
    # We are done if there are no data
    if len(df) == 0:
        break
    # Let's write to the file
    else:
        df.to_csv(f, header=fieldnames)

为什么在数据行之间打印空白行?如何让它创建没有空行且左侧没有行号列的文件?

【问题讨论】:

  • 尝试index=False 排除行标识符。
  • 您运行的是什么操作系统? MS Windows 中的 Pandas to_csv() 似乎将 EOL 设置为 \r\r\n 提供额外的空白行

标签: python pandas


【解决方案1】:

查看 to_csv 的选项:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html

为方便起见,我在这里发布了一些感兴趣的项目:

line_terminator : 字符串,可选

要在输出文件中使用的换行符或字符序列。默认为 os.linesep,这取决于它所在的操作系统 方法被调用('n' 用于 linux,'rn' 用于 Windows,即)。

index : bool,默认为 True

写入行名(索引)。

可能是您正在寻找的。至于空行,请尝试明确指定一个换行符:

df.to_csv(f, header=fieldnames, index=False, line_terminator='\n')

【讨论】:

  • 这不是要我们每 1000 行写入一次标题吗?您可能希望在第一次迭代后将 header 设置为 false。
  • @Dan,嗯,正确,我只是为了那一点而复制他的电话。既然这不是他的问题,我可能会原样离开
  • 谢谢!我有部分进展要报告。左侧显示行号的列不见了!但是数据行之间仍然有空白行!还有其他想法吗?
  • 关于标题的好点!我会把他们排除在这条线之外。谢谢!
  • @bluethundr 尝试将 line_terminator 设置为分号之类的内容,或者甚至将其设置为空白字符串,否则,我不确定为什么会有多余的行。尝试使用纯文本编辑器打开 CSV 文件,看看是否真的有多余的行,或者它只是您用来查看文件的程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多