给出以下df
:
SequenceNumber | ID | CountNumber | Side | featureA | featureB 0 0 | 0 | 3 | Sell | 4 | 2 1 0 | 1 | 1 | Buy | 12 | 45 2 0 | 2 | 1 | Buy | 1 | 4 3 0 | 3 | 1 | Buy | 3 | 36 4 1 | 0 | 1 | Sell | 5 | 11 5 1 | 1 | 1 | Sell | 7 | 12 6 1 | 2 | 2 | Buy | 5 | 35
我想创建一个新的df
,这样对于每一个SequenceNumber
值,它都会使用CountNumber == 1
获取行,并创建新行,如果Side == 'Buy'
将其ID
放入名为To
的列中。否则,将他们的ID
放在名为From
的列中。然后,From
和To
中的空列将采用行的ID
和CountNumber > 1
(每个SequenceNumber
值只有一个)。其余的功能应该保留。
注意:基本上,每个SequenceNumber
代表一个交易,该交易有一个卖方和多个买方,反之亦然。我试图创建一个链接买家和卖家的数据库,其中From
是卖家ID,To
是买家ID。
输出应如下所示:
SequenceNumber | From | To | featureA | featureB 0 0 | 0 | 1 | 12 | 45 1 0 | 0 | 2 | 1 | 4 2 0 | 0 | 3 | 3 | 36 3 0 | 0 | 2 | 5 | 11 4 1 | 1 | 2 | 7 | 12
我实现了一个实现这一点的方法,但我使用的是for循环,这需要很长时间才能在大型数据上运行。我正在寻找一种更快的可扩展方法。有什么建议吗?