Erstens gibt es keine Notwendigkeit, eine Schleife durch jede und jeden Index, nur Pandas verwenden gebaut in boolean indexing. Erste Zeile hier sammeln wir alle Werte in Column2
, die gleich variable1
und stellen Sie die gleiche Zeile in Column3
sind variable2
df.ix[df.Column2==variable1, 'Column3'] = variable2
df.ix[df.Column2==variable3, 'Column3'] = variable4
Ein einfaches Beispiel wäre
import pandas as pd
df = pd.DataFrame({'Animal':['dog', 'fish', 'fish', 'dog']})
print(df)
Animal
0 dog
1 fish
2 fish
3 dog
df.ix[df.Animal=='dog', 'Colour'] = 'brown'
df.ix[df.Animal=='fish', 'Colour'] = 'silver'
print(df)
Animal Colour
0 dog brown
1 fish silver
2 fish silver
3 dog brown
Das obige Verfahren
sein kann sehr einfach mit mehreren Bedingungen wie
&
und
|
auf booleschen Index aufgebaut werden.
df = pd.DataFrame({'Animal':['dog', 'fish', 'fish', 'dog'], 'Age': [1, 3, 2, 10]})
print(df)
Age Animal
0 1 dog
1 3 fish
2 2 fish
3 10 dog
df.ix[(df.Animal=='dog') & (df.Age > 8), 'Colour'] = 'grey' # old dogs go grey
df.ix[(df.Animal=='dog') & (df.Age <= 8), 'Colour'] = 'brown'
df.ix[df.Animal=='fish', 'Colour'] = 'silver'
print(df)
Age Animal Colour
0 1 dog brown
1 3 fish silver
2 2 fish silver
3 10 dog grey
Sie können 'für i, r in df.iterrows()' verwenden, um 'i' als Index und' r' als eine Reihe von Zeilenwerten zu erhalten. Dies macht das Schreiben der if, elif-Bedingungen einfacher 'if r.Column2 == variable1:' – josh
Ich habe gerade festgestellt, dass das Hauptproblem hier ist, dass Sie die gesamte Spalte Column3 entweder auf variable2 und variable4 für ALL 'i' setzen. Sie erhalten nur Variable2, da Variable1 das letzte Element in Spalte2 ist. Mit anderen Worten benutzen Sie einfach 'df.ix [i, 'Column3'] = variable2' und' df.ix [i, 'Column3'] = variable4'. – josh