我创建了一个只包含字符串的单列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
有没有办法指示大熊猫不要写引号并在输出文本文件中留下空行?非常感谢你。
答案 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()