Aquí es un ejemplo de lo que estoy tratando de conseguir:

Tengo:

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

Mi objetivo es:

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

Me puede lograr esto con los perezosos y horrible:

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

También to_string() métodos se ve muy prometedor; sin embargo, la mejor que se me ocurre es esta:

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

Esto no crea una innecesaria de archivos, pero parece descuidado y tal vez no muy fiables.

Que me estoy perdiendo una solución más sencilla?

InformationsquelleAutor Akavall | 2014-04-22

2 Comentarios

  1. 37
    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'
    • -1 ya que es una exageración (tal vez era de una versión anterior de los pandas). Pero en última si no path_or_buf es siempre el resultado se devuelve como una cadena. Véase la respuesta a continuación.
    • por supuesto, esto fue de 0.14 iirc
  2. 68

    La forma más sencilla es simplemente para no introducir cualquier nombre de archivo, en este caso una cadena que se devuelve:

    >>> df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]})
    >>> df.to_csv()
    ',A,B\n0,0,1\n1,1,6\n'
    • Si usted está usando una serie, usted necesita para envolver en un dataframe constructor: pandas.DataFrame(series).to_csv().

Dejar respuesta

Please enter your comment!
Please enter your name here