将pandas DataFrame写入带有一些空行的csv文件中

时间:2013-12-18 17:58:01

标签: 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

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

1 个答案:

答案 0 :(得分:1)

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()
相关问题