2016-09-20 5 views
0

Ich habe viele Lösungen überprüft, aber ich konnte keine auf mein Problem anwenden.Spalte zu .CSV-Datei in Python hinzufügen und Werte berechnen

Ich habe eine CSV-Datei, wie folgt aus:

Header_A;Header_B 
    0;1 
    1;4 
    5;6 
    6;7 
    9;8 

Jetzt möchte ich pythonically eine weitere Spalte „Header_C“, um es hinzuzufügen und seine Werte zu berechnen (x) aus der Addition von den ersten zwei Spalten pro Definition, so etwas wie

def add(a, b): 
     x = a + b 
     return x 

wo x wird der Wert der Spalte Header_C und a, b werden die Summen der Spalten Header_A und Header_B.

Das Ergebnis sollte wie folgt aussehen:

Header_A;Header_B;Header_C 
    0;1;1 
    1;4;5 
    5;6;11 
    6;7;13 
    9;8;17 

Wenn möglich, ohne zusätzliche Module zu installieren. Die Ausgabe kann eine neue CSV-Datei sein.

Vielen Dank!

Antwort

0

pandas ist Ihre Lösung:

import pandas as pd 

df = pd.read_csv('a.csv') 
df['Header_C'] = df['Header_A'] + df['Header_B'] 

df.to_csv('b.csv', sep=';', index=False) 

Für weitere Informationen über Pandas besuchen Sie bitte http://pandas.pydata.org/

+0

Ich stieß auf Pandas, aber ich hoffte, es zu tun, ohne irgendwelche Module zu installieren. Vielleicht das CSV-Modul oder so, aber ich kann keine Lösung für mein Problem in der Dokumentation oder an anderer Stelle – Khaled

+0

Ich habe Ihr Beispiel erneut versucht und ich habe diesen Fehler: Traceback (zuletzt letzten Anruf): Datei "", Zeile 254, in run_nodebug Datei "D: \ Dropbox \ Python-Projekte \ CSV \ CSV mit Pandas.py", Zeile 5, in df ["Header_C"] = df ["Header_A"] + df ["Header_B"] ... KeyError: 'Header_A' – Khaled

+0

Ich fand die Ursache. Wenden Sie diese Änderung an: 'df = pd.read_csv ('a.csv', sep = ';')' – zipa

0

Ich habe immer noch den gleichen Fehler auch mit der Linie

df = pd.read_csv('a.csv', sep=';') 

Aber du mich inspiriert und hat mich auf die Idee gebracht, dass das Problem Header sein könnte! Also habe ich ein paar Dinge ausprobiert und jetzt funktioniert es. Hier ist der voll funktionsfähigen Code:

import pandas 
df = pandas.read_csv("a.csv", sep=';', names=['Header_A', 'Header_B'], header=0) 
df['Header_C'] = df["Header_A"] + df["Header_B"] 
df.to_csv("b.csv", sep=';', index=False) 

wenn Header auf NONE gesetzt ist, Python behandelt die Werte als Strings, die in Sachen wie diese führen würde:

9 + 3 = 93 

Wenn Sie header = 0 gesetzt überschreibst du das. Ich bin mir nicht sicher, ob meine Erklärung richtig ist, aber jetzt macht das Programm, was ich will! Danke vielmals!

Ich bin aber immer noch an einer Lösung mit dem CSV-Modul oder rein Python OHNE Modul interessiert! Jemand?

Verwandte Themen