it-swarm.com.de

Pandas.read_csv () mit Sonderzeichen (Akzente) in Spaltennamen

Ich habe eine csv-Datei, die einige Daten mit Spaltennamen enthält:

  • "PERIODE"
  • "IAS_brut"
  • "IAS_lissé"
  • "Inzidenz_Sentinellen"

Ich habe ein Problem mit dem dritten"IAS_lissé", das von der pd.read_csv()-Methode falsch interpretiert und als returned zurückgegeben wird.

Was ist das für ein Charakter?

Gibt es eine Möglichkeit, diese Spalte auf andere Weise zu lesen, ohne dabei die Datei zu ändern?

In [1]: import pandas as pd

In [2]: pd.read_csv("Openhealth_S-Grippal.csv",delimiter=";").columns

Out[2]: Index([u'PERIODE', u'IAS_brut', u'IAS_liss�', u'Incidence_Sentinelles'], dtype='object')
7
farhawa

Sie können den Parameter encoding für read_csv ändern, siehe Pandas doc hier . Auch die Python-Standardkodierungen sind hier

Ich glaube, für Ihr Beispiel können Sie die utf-8-Kodierung verwenden (vorausgesetzt, Ihre Sprache ist Französisch). 

df = pd.read_csv("Openhealth_S-Grippal.csv", delimiter=";", encoding='utf-8')

Hier ist ein Beispiel, das einige Beispielausgaben zeigt. Ich habe nur eine CSV-Datei mit einer Spalte erstellt und die Problemzeichen verwendet.

df = pd.read_csv('sample.csv', encoding='utf-8')

Ausgabe:

    IAS_lissé
0   1
1   2
2   3
2
shawnheide

Utf-8 zu benutzen funktionierte bei mir nicht. Z.B. dieses Stück Code: 

    bla = pd.DataFrame(data = [1, 2])
    bla.to_csv('funkyNamé , things.csv')
    blabla = pd.read_csv('funkyNamé , things.csv', delimiter=";", encoding='utf-8')
    blabla 

Letztendlich zurückgegeben: OSError: Das Initialisieren von Datei ist fehlgeschlagen

Ich weiß, Sie sagten, Sie wollten die Datei nicht ändern. Wenn Sie den Inhalt der Datei im Vergleich zum Dateinamen meinen, würde ich die Datei ohne Akzent umbenennen, die csv-Datei unter ihrem neuen Namen lesen und den Dateinamen auf den ursprünglichen Namen zurücksetzen. 

    originalfilepath = r'C:\Users\myself\\funkyNamé , things.csv'
    originalfolder = r'C:\Users\myself'
    os.rename(originalfilepath, originalFolder+"\\tempName.csv")
    df = pd.read_csv(originalFolder+"\\tempName.csv", encoding='ISO-8859-1')
    os.rename(originalFolder+"\\tempName.csv", originalfilepath)

Wenn Sie "ohne Änderung der Datei" meinennameIch entschuldige mich dafür, dass ich Ihnen nicht behilflich bin, und ich hoffe, dass dies jemand anderem hilft. 

1
pantherenoire

Ich habe das gleiche Problem mit Spanisch gefunden, mit "latin1" kodiert:

import pandas as pd

 pd.read_csv("Openhealth_S-Grippal.csv",delimiter=";", encoding='latin1')

Ich hoffe es hilft!