write without to_csv index from example data python file-io pandas

to_csv - save dataframe to csv without index python



CuestiĆ³n de salida pandas to_csv (4)

A diferencia de escribir ''foo.txt'' , escribe ''foo.csv'' . Eso solucionó el problema. Cuando el archivo CSV se lee en Excel, las comillas adicionales están ausentes.

Soy bastante nuevo en los pandas de Python, pero tengo problemas para obtener la salida correcta de to_csv.

import pandas as pd text = ''this is "out text"'' df = pd.DataFrame(index=[''1''],columns=[''1'',''2'']) df.loc[''1'',''1'']=123 df.loc[''1'',''2'']=text df.to_csv(''foo.txt'',index=False,header=False)

La salida es:

123, "esto es" "texto extra" ""

Pero me gustaría:

123, esto es "fuera de texto"

¿Alguien sabe cómo hacer esto bien?


Nota: actualmente hay un pequeño error en la documentación de Pandas to_string . Dice:

  • quoting: int, controla si se deben reconocer las comillas. Los valores se toman de los valores csv.QUOTE_ *. Los valores aceptables son 0, 1, 2 y 3 para QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONE y QUOTE_NONNUMERIC,
    respectivamente.

Pero esto invierte cómo csv define las variables QUOTE_NONE y QUOTE_NONNUMERIC.

In [13]: import csv In [14]: csv.QUOTE_NONE Out[14]: 3


Para usar quoting=csv.QUOTE_NONE , debe configurar el escapechar , por ejemplo

# Create a tab-separated file with quotes $ echo abc$''/t''defg$''/t''$''"xyz"'' > in.tsv $ cat in.tsv abc defg "xyz" # Gotcha the quotes disappears in `"..."` $ python3 >>> import pandas as pd >>> import csv >>> df = pd.read("in.tsv", sep="/t") >>> df = pd.read_csv("in.tsv", sep="/t") >>> df Empty DataFrame Columns: [abc, defg, xyz] Index: [] # When reading in pandas, to read the `"..."` quotes, # you have to explicitly say there''s no `quotechar` >>> df = pd.read_csv("in.tsv", sep="/t", quotechar=''/0'') >>> df Empty DataFrame Columns: [abc, defg, "xyz"] Index: [] # To print out without the quotes. >> df.to_csv("out.tsv", , sep="/t", quoting=csv.QUOTE_NONE, quotechar="", escapechar="//")


Podría pasar quoting=csv.QUOTE_NONE , por ejemplo:

>>> df.to_csv(''foo.txt'',index=False,header=False) >>> !cat foo.txt 123,"this is ""out text""" >>> import csv >>> df.to_csv(''foo.txt'',index=False,header=False, quoting=csv.QUOTE_NONE) >>> !cat foo.txt 123,this is "out text"

pero en mi experiencia es mejor citar más, en lugar de menos.