2016-03-31 5 views
1

Ich bin neu in Python und Pandas ...bedingter Austausch mit Pandas

Ich habe einen Datenrahmen mit einer Textspalte. Ich möchte für die gesamte Spalte den Wert "AZB" durch den Wert über diesem Wert ersetzen (ein Offset von -1)

Wie kann ich das erreichen? Ich habe versucht mit Pandas „wo“ und versuchte auch

df[(df['INDEX'] == 'AZB')] = df['INDEX']-1 

aber hat nicht funktioniert

Antwort

1

Sie 'AZB' Werte NaN einstellen könnte, und dann fillna(method='ffill') nutzen sie oben aus der Reihe mit den Werten zu ersetzen.

df.ix[df['INDEX'] == 'AZB', 'INDEX'] = np.NaN 
df.fillna(method='ffill', inplace=True) 

Wenn Ihr Datensatz nicht riesig ist, wäre eine andere Möglichkeit, um Reihe durch Ihre Datenrahmen Reihe zu durchlaufen, aber es wäre viel langsamer:

for i in range(1, len(df)): 
    if df.ix[i, 'INDEX'] == 'AZB': 
     df.ix[i, 'INDEX'] = df.ix[i-1, 'INDEX']