2016-11-24 4 views
1

Ich lese eine CSV-Datei mit dem Namen df, die 4 Spalten (id, skill, ..) und 30 Zeilen hat, möchte ich das Programm jede ID überprüfen und wenn die ID ist " A035755 "drucken Sie dann die zugehörige Fähigkeit (j). Ich habe das folgende Programm geschrieben, es funktioniert fast, aber das Problem ist, dass es mehr als einmal iteriert, also habe ich statt 30 Ergebnisse mehr als 100!
Ich denke, meine Indizierung könnte das Problem sein, aber nicht sicher, wie es zu beheben ist.For Schleife in Python 3 (mehrere Iteration)

Dank J

df=pd.read_csv('location') 
for i in df.id[0:len(df)]: #id is one of the columns 
    for j in df.skill:  #skill another column 
     if i == "A035755": 
      print(j) 
     else: 
      print("Not Found") 

Antwort

1

Wenn ich richtig verstehe, df Attribute (df.id, df.skill) repräsentieren Spalten und Indizes in den Listen (df.id [1..n]) repräsentieren Reihen, dann richtige Art und Weise folgt:

df = pd.read_csv('location') 
for index, rec_id in enumerate(df.id): #id is one of the columns 
    if rec_id == "A035755": 
     print(df.skill[index]) 
0

So können Sie den Index iterieren und refrence. Gefällt Ihnen dieses

for index,value in df.id.items(): #id is one of the columns 
     if value == "A035755": 
      print(df.skill[index]) 
     else: 
      print("Not Found") 

Oder können Sie auf records

for record in df: 
    if record.id == "A035755": 
     print(record.skill) 
    else: 
     print("Not Found") 
+0

Dank iterieren, aber keiner der Lösung funktioniert. Wirklich, was das Programm tut, druckt Fähigkeitsspalte 3mal und dann einmal "nicht gefunden" –

+0

können Sie gegenwärtige Ausgabe und erwartete Ausgabe der Frage hinzufügen? – harshil9968