#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