比较Pandas数据帧行和删除具有重叠日期的行

2024-10-01 13:38:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,里面装满了从交易策略中提取的交易。交易策略中的逻辑需要更新,以确保如果策略已经在交易中,就不会采取交易——但这是另一个问题。以前许多交易的交易数据从csv文件读入数据帧。在

以下是我的数据问题: 我需要逐行比较dataframe,以确定rowX的Entrydate是否小于exitdaterowx-1。在

我的数据示例:

Row 1:
EntryDate  ExitDate
2012-07-25 2012-07-27 

Row 2:
EntryDate  ExitDate
2012-07-26 2012-07-29

第2行需要删除,因为这是一个不应该发生的交易。在

我很难识别哪些行是重复的,然后删除它们。我幸运地尝试了approach in answer 3 of this question,但它并不理想,因为我必须手动遍历数据帧并读取每行的数据。我目前的方法是下面的,是丑陋的,因为可以。我检查日期,然后将它们添加到新的数据帧中。另外,这种方法在最终的数据帧中给了我多个副本。在

^{pr2}$

对于如何更有效地实现这一目标有什么想法或想法?在

如果您想重现我的实际数据帧,您可以click here查看我的数据采样。在


Tags: 文件csv数据方法示例dataframe交易逻辑
1条回答
网友
1楼 · 发布于 2024-10-01 13:38:56

您应该使用某种布尔掩码来执行这种操作。在

一种方法是为下一个交易创建一个虚拟列:

df['EntryNextTrade'] = df['EntryDate'].shift()

使用此选项创建遮罩:

^{pr2}$

并使用loc查看msk为True的子数据帧,并且只查看指定的列:

df.loc[msk, ['EntryDate', 'ExitDate']]

相关问题 更多 >