将Pandas数据框转换为CSV字符串

90

这是一个我试图获取的示例:

我有:

import pandas as pd 
df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]})

我的目标是:

',A,B\n0,0,1\n1,1,6\n'

我可以通过懒惰和可怕的方式实现这个:

df.to_csv('temp.csv') # create unnecessary file
body = open('temp.csv').read()

此外,to_string() 方法看起来非常有前途;然而,我能想到的最好方法就是这样:

body = df.to_string()[1:].replace('  ', ',') + '\n'

这不会创建不必要的文件,但看起来有些粗糙,可能并不是非常可靠。

我是否忽略了更简单的解决方案?

2个回答

177

最简单的方法就是不输入任何文件名,在这种情况下返回一个字符串:

>>> df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]})
>>> df.to_csv()
',A,B\n0,0,1\n1,1,6\n'

10
如果你正在使用一个序列,你需要将它包装在一个数据框构造器中:pandas.DataFrame(series).to_csv() - The Unfun Cat

53
In [10]: df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]})

In [11]: import io

In [12]: s = io.StringIO()

In [13]: df.to_csv(s)

In [14]: s.getvalue()
Out[14]: ',A,B\n0,0,1\n1,1,6\n'

19
如果没有提供 path_or_buf 参数,则最新版本的 pandas 会将结果作为字符串返回,因此 -1 是多余的(可能是来自 pandas 的以前版本)。请参见下面的答案。 - John Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接