скажем, моя колонка выглядит примерно так:
trade_signal
buy
buy
buy
buy
sell
sell
sell
sell
buy
buy
buy
sell
sell
buy
sell
buy
Я хотел бы удалить повторяющиеся элементы в столбце и заменить их на NAN или 0, чтобы в итоге получилось что-то вроде:
trade_signal
buy
nan
nan
nan
sell
nan
nan
nan
buy
nan
nan
sell
nan
buy
sell
buy
Я совершенно не уверен в логике, которую я могу использовать для этого, я думаю, я бы каким-то образом перенаправил заполнение до следующего изменения сигнала со значениями NAN?
Попробуйте маску со сдвигом:
df['trade_signal'] = df['trade_signal'].mask(df['trade_signal'].eq(
df['trade_signal'].shift())
)
trade_signal
0 buy
1 NaN
2 NaN
3 NaN
4 sell
5 NaN
6 NaN
7 NaN
8 buy
9 NaN
10 NaN
11 sell
12 NaN
13 buy
14 sell
15 buy
@Jason_Leto, не могли бы вы привести пример серии dict? (также попробуйте код один раз, так как я думаю, что это справится)
Код этого не делает, например df['Trade_Signal'] = pd.Series(np.array(['buy', 'NaN', 'Buy', 'Nan', 'Sell'])) я хотел бы быть все nans между первой покупкой и последним элементом (продажа)
Извините, я использовал это в качестве примера, изменил его выше. Это дает мне ['купить'', nan', 'купить', nan, 'продать'], я хотел бы ['купить', nan''nan, nan, 'продать']
@Jason_Leto просто сделайте df['trade_signal']=df['trade_signal'].ffill()
, прежде чем пробовать этот код, и дайте мне знать
спасибо, это здорово, возможно ли заполнить нанс до следующего сигнала на покупку/продажу? поэтому, если бы он пошел купить, нан, нан, купить, нан, продать, это закончилось бы как покупка, нан, нан, нан, нан, продать