Увеличьте столбец фрейма данных от определенного значения на основе условия

#python #pandas #dataframe #columnsorting

Вопрос:

У меня есть фрейм данных, и я хочу создать новый столбец на основе условия в другом столбце. Создайте новый столбец «ans», который начинается с 2348 и увеличивается на основе столбца «ix». В столбце «ix», если значение совпадает со следующим, сохраняйте столбец «ans» таким же, и если его другое приращение «ans»

Спасибо вам за ваш ответ

 index ix   1 pa   2 pa  3 pa  4 pe  5 fc  6 pb  7 pb  8 df  

должно привести к:-

 index ix ans  1 pa 2348  2 pa 2348  3 pa 2348  4 pe 2349  5 fc 2350  6 pb 2351  7 pb 2351  8 df 2352  

Комментарии:

1. Что должно произойти для последнего значения, так как сравнивать не с чем? Похоже, в вашем примере вы увеличиваете, основываясь на том, что предыдущее значение отличается? Просто хочу быть уверенным

Ответ №1:

Вы можете проверить равенство ix столбца с его предыдущей строкой с помощью shift() и использовать cumsum() :

 df['ans'] = (  df['ix'].ne(df['ix'].shift(1))  ).cumsum().add(2348) - 1  

С принтами:

 index ix ans 0 1 pa 2348 1 2 pa 2348 2 3 pa 2348 3 4 pe 2349 4 5 fc 2350 5 6 pb 2351 6 7 pb 2351 7 8 df 2352