将Pandas数据帧转换为csv字符串

Aka*_*all 43 python pandas

这是我想要得到的一个例子:

我有:

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

我的目标是:

',A,B\n0,0,1\n1,1,6\n'
Run Code Online (Sandbox Code Playgroud)

我可以用懒惰和可怕的方式实现这个目标:

df.to_csv('temp.csv') # create unnecessary file
body = open('temp.csv').read()
Run Code Online (Sandbox Code Playgroud)

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

body = df.to_string()[1:].replace('  ', ',') + '\n'
Run Code Online (Sandbox Code Playgroud)

这不会创建一个不必要的文件,但似乎草率,也许不太可靠.

我错过了一个更简单的解决方案吗?

ely*_*ase 72

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

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

  • 如果您正在使用系列,则需要将其包装在数据帧构造函数中:`pandas.DataFrame(series).to_csv()`. (6认同)

Jef*_*eff 36

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'
Run Code Online (Sandbox Code Playgroud)

  • -1因为它是一种矫枉过正(也许它来自之前版本的熊猫).但是最近如果没有提供`path_or_buf`,结果将作为字符串返回.见下面的答案. (7认同)