#python #pandas #dataframe
Вопрос:
Я ищу, чтобы создать новый столбец, который возвращает самое последнее значение, которое не было значением «C»
Например, я хотел бы иметь возможность генерировать «New_Column», как показано ниже
Current_Column New_Column
B B
S S
B B
S S
C S
B B
S S
C S
C S
B B
Я пробовал использовать метод .shift (), который отлично работает до тех пор, пока вы не получите 2 или более последовательных значений «C».
Мне удалось создать столбец с помощью цикла for, который находится внутри .loc, но в больших масштабах это просто слишком медленно.
Спасибо за любую помощь.
Ответ №1:
попробуйте через where()
и ffill()
:
df['New_Column']=df['Current_Column'].where(df['Current_Column']!='C').ffill()
или
через np.where()
и ffill()
:
#import numpy as np
df['New_Column']=np.where(df['Current_Column']!='C',df['Current_Column'],np.nan).ffill()
или
через mask()
и ffill()
:
#thanks to @HenryEcker for this
df['New_Column']=df['Current_Column'].mask(df['Current_Column'].eq('C')).ffill()
Комментарии:
1. @Michael Если это решило ваш запрос, то вы можете попробовать рассмотреть возможность принятия ответа, чтобы указать другим, что проблема решена…. thnx 🙂