删除数据框行中的重复项,同时保持第一个出现的顺序



与Pandas一起做一个业余项目,并试图回测一个自动交易策略。我遇到了一个小问题,买入和卖出信号正在生成,通常有几个买入信号在一排或几个卖出信号在一排,你可以从提供的图像中看到。有人知道我如何过滤掉重复的,同时仍然保持原始的买入和卖出信号的完整性,并与指数一致?我希望一个买入信号只与卖出一起进行,而不是让它重复几次。是否有一种方法来删除重复的信号,并将其替换为空值?也许必须编写一个函数来读取整个列并替换重复的列,因为df. drop_duplduplicate()函数不起作用。

希望听到任何人的回音,干杯。

输入图片描述

如果我正确理解你的问题,你想在重复动作的序列中只保留第一个买入/卖出信号,对吗?例如,如果列中的值为buy, buy, buy, sell, sell, buy, sell, buy, buy, sell, sell,则期望的输出为buy, sell, buy, sell, buy, sell

如果我理解正确的话,这就是你问题的答案。

df = pd.DataFrame({
'date': [1,2,3,4,5,6,7],
'action': ['b','b','s','b','s','s','b']
})
df = df.sort_values('date')
df['lag_action'] = df['action'].shift(1)
df = df[df['action'] != df['lag_action']]
df = df.drop('lag_action', axis=1)
print(df.to_markdown(index=False))

结果:

ss

相关内容

最新更新