Convert Pandas dataframe to csv string

PythonPandas

Python Problem Overview


Here is an example of what I am trying to get:

I have:

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

My goal is:

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

I can achieve this with lazy and horrible:

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

Also to_string() methods looks very promising; however, the best I can come up with is this:

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

This does not create an unnecessary file, but seems sloppy and perhaps not very reliable.

Am I missing a simpler solution?

Python Solutions


Solution 1 - Python

The simplest way is just to not input any filename, in this case a string is returned:

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

Solution 2 - Python

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'

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAkavallView Question on Stackoverflow
Solution 1 - PythonelyaseView Answer on Stackoverflow
Solution 2 - PythonJeffView Answer on Stackoverflow