2016-03-31 2 views
1

Я новичок в python и pandas ...условная замена с pandas

У меня есть кадр данных с одним текстовым столбцом. Я бы хотел, чтобы во всей колонке заменить значение «AZB» на значение выше этого значения (смещение -1)

Как я могу это достичь? Я попытался с пандами «где», а также пытался

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

но не работает

ответ

1

Вы можете установить 'AZB' значения NaN, а затем использовать fillna(method='ffill') заменить их значениями из приведенной выше строки.

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

Если набор данных не огромный, другой способ будет перебирать через dataframe по строкам, но было бы гораздо медленнее:

for i in range(1, len(df)): 
    if df.ix[i, 'INDEX'] == 'AZB': 
     df.ix[i, 'INDEX'] = df.ix[i-1, 'INDEX'] 
Смежные вопросы