python - 将 pandas DataFrame 写入包含一些空行的 csv 文件

标签 python pandas

我创建了一个仅包含字符串的单列 pandas DataFrame。一排是空的。当我将文件写入磁盘时,空行得到一个空引号“”,而我根本不需要引号。以下是重现问题的方法:

import pandas as pd
df = "Name=Test\n\n[Actual Values]\nLength=12\n"
df = pd.DataFrame(df.split("\n"))
df.to_csv("C:/Users/Max/Desktop/Test.txt", header=False, index=False)

输出文件应该是这样的:

Name=Test
[Actual Values]

Length=12

而是这样的:

Name=Test
[Actual Values]
""
Length=12

有没有办法指示 Pandas 不要写引号并在输出文本文件中留下一个空行?非常感谢。

最佳答案

DataFrame.to_csv 有一个名为 na_rep 的参数。如果您有 None 值,它将用您传递到此字段的任何内容替换它们。

import pandas as pd
df = "Name=Test\n"
df += "\n[Actual Values]\n"
df += "Length=12\n"
df = pd.DataFrame(df.split("\n"))
df[df[0]==""] = None
df.to_csv("pandas_test.txt", header=False, index=False, na_rep=" ")

不幸的是,似乎传入 na_rep="" 会将引号打印到 csv 中。但是,如果你传入一个空格 (na_rep=""),它看起来更美观......

当然,您始终可以编写自己的函数来输出 csv,或者使用以下方法简单地替换输出文件中的“”:

f = open(filename, 'r')
text = f.read()
f.close()
text = text.replace("\"\"","")
f = open(filename, 'w')
f.write(text)
f.close()

下面是您可以编写自己的 to_csv() 方法的方法:

def to_csv(df, filename, separator):
    f = open(filename, 'w')
    for col in df.values:
        for row in col:
            f.write(row + separator)
    f.close()

关于python - 将 pandas DataFrame 写入包含一些空行的 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665141/

相关文章:

python - pandas Grouper 未按预期进行上采样

python - 使用 re 从 .pgn (字符串行)构建数据框

python - Pandas - 字典列表的列扩展 - 如何优化?

python - 如何将另一个系列传递给 pandas.Series.str.startswith

python - 如何在Python中通过删除换行符来搜索字符串,但返回找到字符串的确切行?

python - 两个 bool 列表之间的逻辑运算

python - 为 Tkinter 脚本创建桌面图标

python - [pandas.read_csv(filename)] 和 [pandas.DataFrame.from_csv(filename)] 有什么区别

Python 替换 Dataframe 字符串中的整个值而不是子字符串

python - 获取实例变量的类