2016-05-26 23 views
0

Sagen wir dies in der Eingabe-CSV-Datei.Spaltenwerte in CSV mit Python ändern

enter image description here

ich über die Babys Spalte gehen möchte und es zunehmende Zahl zu ändern, indem 1.

Was habe ich, wie viele Zeilen es in der Datei sind zu zählen, und ein Lauf für Schleife auf allen von ihnen. Aber ich kann nicht herausfinden, wie die Werte

v = open(input.csv) 
    r=csv.reader(v) 
    numline = len(v.readlines()) 
    print (numline) 
    for row in r: 
     if row["Baby"] == "Baby": 
      for i in range (1, numline): 
       print("test") 
+1

Bitte versucht Code mit Fehlermeldung, wenn keine Nachrichten liefern, betrachten http://stackoverflow.com/help/mcve Lesen, dank – glls

+0

Und bitte nicht enthalten eine solche einfaches CSV als Bild Es kann leicht als ein Codeblock enthalten sein. –

Antwort

4

Es kann sehr einfach durchgeführt werden, wenn sie als pd

# read/parse CSV into pandas data frame 
df = pd.read_csv('input.csv', delim_whitespace=True) 

Ausgang pandas Modul

Import Pandas mit:

In [33]: df 
Out[33]: 
    Name Age Babys 
0 Avi 25  1 
1 Dav 24  1 
2 Ela 30  1 
3 Ron 40  1 
4 Shi 33  1 
5 Leb 22  1 
6 Moe 11  1 

bedingt erhöhen Babys Spalte von 1

df.loc[(df.Name.isin(['Avi','Dav','Ron'])) & (df.Age < 33), 'Babys'] += 1 

Ausgang:

In [35]: df 
Out[35]: 
    Name Age Babys 
0 Avi 25  2 
1 Dav 24  2 
2 Ela 30  1 
3 Ron 40  1 
4 Shi 33  1 
5 Leb 22  1 
6 Moe 11  1 

Erhöhung Babys Spalte von 1 für alle Reihen (bedingungslos)

df.Babys += 1 

Ausgang:

In [43]: df 
Out[43]: 
    Name Age Babys 
0 Avi 25  3 
1 Dav 24  3 
2 Ela 30  2 
3 Ron 40  2 
4 Shi 33  2 
5 Leb 22  2 
6 Moe 11  2 

Schließlich DF zurück in eine CSV-Datei geändert sparen:

df.to_csv('d:/temp/out.csv', index=False, sep=',') 

out.csv:

Name,Age,Babys 
Avi,25,3 
Dav,24,3 
Ela,30,2 
Ron,40,2 
Shi,33,2 
Leb,22,2 
Moe,11,2 
1

Sie Python pandas können sich ändern die Spaltennummer von n zu erhöhen:

import pandas 
data_df = pandas.read_csv('input.csv') 
data_df = data_df['age'].apply(lambda x: x+n) 
print data_df 

für das Hinzufügen von 1 ersetzen n durch 1.